#!/usr/bin/perl use strict; use warnings; use Getopt::Std; my $USAGE = "$0 \n"; my %opts; getopts("", \%opts) or die $USAGE; if (@ARGV != 2) { die $USAGE; } my ($old, $new) = @ARGV; my $devices = load_nics(); unless (defined $devices->{$old}) { die "No such device named '$old'.\n"; } if (defined $devices->{$new}) { die "Device named '$new' already exists.\n"; } system ("/sbin/ip", "link", "set", "dev", $old, "name", $new); my $exit_value = $? >> 8; if ($exit_value != 0) { die "Unable to rename device: $!"; } exit (0); # load_nics # # @returns hash (key = name of device, value = arrayref [ mac, device ID ] sub load_nics { my $devices = {}; open SHOW, "shownics -md |" or die "Unable to run shownics : $!"; while (my $line = ) { chop $line; my ($name, $mac, $device) = split (/\t/, $line); $devices->{$name} = [ $mac, $device ]; } close SHOW; return $devices; }