ネットワークインターフェイス名を取得して名前を変更する方法を見つけようとしています。今のところ、この例で名前を変更するのは簡単です。
ip link set eth1 name <newName>;
ただし、Macアドレスに基づいてリンク名を自動設定するスクリプトまたはコマンドが必要です。
例、私はこれを行おうとしています:
1)MACアドレス「68:05:ca:0e:74:c4」のインターフェース名を取得します。
2)インターフェース名を見つけたら、MACアドレスで見つけて変更します。 'ip link setname;'を発行する
これをbashスクリプト/コマンドで実行して、インターフェイス名を自動的に見つけて名前を変更することは可能ですか? 「iplinkshow」でawkを使ってやってみましたが、運が悪かったです。
Awkを使おうとすると、インターフェース名とMACアドレスが別々の行にあるため、問題が発生します。
ip link | awk '{print $2}'
これは、最初にインターフェイスの名前を変数に取得し、それを使用して新しい名前を設定する小さなスクリプトで行います。
#!/bin/bash
oldinterfacename=$(ip -br link | awk '$3 ~ /90:10:00:9f:46:c3/ {print $1}')
if [ -z "$oldinterfacename" ]
then
echo "Did not find interface to rename"
exit 1
fi
ip link set "$oldinterfacename" name newName || { echo "Error: Failed to set newName" ; exit 1; }
各インターフェースのMAC-ADDRESSとのマッピングを含むファイル/etc/udev/rules.d/70-persistent-net.rulesを作成して、任意のデバイス名を設定することもできます。例えば:
# eth at pci address: 00:03.0
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:ad:33:02" ATTR{type}=="1", NAME="enp0"
# eth at pci address: 00:03.1
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:ad:33:03" ATTR{type}=="1", NAME="enp1"
作成したら、-再起動して変更を適用する必要があります。 -ネットワーク構成を変更します(例:/ etc/sysconfig/network-scripts/ifcfgとルートファイル、またはアクティブな場合はNetworkManagerを使用)。
一貫したネットワークデバイスの命名で、MACアドレスに基づいてインターフェイス名を作成できます。たとえば、この方法では、ハードウェアアドレス68:05:ca:0e:74:c4のインターフェイスの名前はenx6805ca0e74c4
になります。
RHEL/CentOS 7では、udevの命名規則を少し変更する必要があります。あなたはこれらの指示でそれをすることができます:
デフォルトファイル/usr/lib/udev/rules.d/80-net-name-slot.rules
をディレクトリ/etc/udev/rules.d
にコピーしてから、コピーを編集します。
コピーしたファイルで、次の3行を見つけます。
NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}"
NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
これらの行を次のように置き換えます。
NAME=="", ENV{ID_NET_NAME_MAC}!="", NAME="$env{ID_NET_NAME_MAC}"
次に、再起動します。
変更前のインターフェースは次のようになります。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:21:d1:84 brd ff:ff:ff:ff:ff:ff
inet 172.20.203.174/24 brd 172.20.203.255 scope global noprefixroute dynamic enx52540021d184
valid_lft 3588sec preferred_lft 3588sec
inet6 2001:db8:b0b9:0:3962::a1be/128 scope global noprefixroute dynamic
valid_lft 3591sec preferred_lft 3591sec
inet6 fe80::5054:ff:fe21:d184/64 scope link noprefixroute
valid_lft forever preferred_lft forever
変更後は、次のようになります。
2: enx52540021d184: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:21:d1:84 brd ff:ff:ff:ff:ff:ff
inet 172.20.203.174/24 brd 172.20.203.255 scope global noprefixroute dynamic enx52540021d184
valid_lft 3588sec preferred_lft 3588sec
inet6 2001:db8:b0b9:0:3962::a1be/128 scope global noprefixroute dynamic
valid_lft 3591sec preferred_lft 3591sec
inet6 fe80::5054:ff:fe21:d184/64 scope link noprefixroute
valid_lft forever preferred_lft forever
この命名スキームでは、NICを交換する必要がある場合、ネットワークを再構成するために手動で介入する必要があることに注意してください。