複数のネットワークインターフェイスを設定するためにbashスクリプトを作成しようとしていますが、一部のNICがデバイス名ではなく有線接続名を取得できない場合があります。例えば
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
ens22 ethernet connected ens22
ens18 ethernet connected Wired connection 2
ens19 ethernet connected ens19
ens20 ethernet connected Wired connection 1
ens21 ethernet connected ens21
lo loopback unmanaged --
その影響は、デバイス名ではなく接続名が期待されるため、これらのコマンドが失敗することです。
printf "\n${YELLOW}### Configure ens20: ###${NC}\n"
sudo nmcli con mod ens20 ipv4.addresses 10.70.20.254/24
sudo nmcli con mod ens20 ipv4.dns 8.8.8.8
sudo nmcli con mod ens20 ipv4.method manual
質問:
- 一部のインターフェイスにのみ「有線接続」という名前が付けられるのはなぜですか?
- 代わりに、インターフェイス名を使用するオプションはnmcliにありますか?
- 接続名を変更できますか?接続プロパティの名前を変更しようとしましたが、デバイスではなく接続を変更しないと、この操作を実行できません。
これは働きます:
sudo nmcli connection modify "Wired connection 2" connection.id "ens18"
これはうまくいきません:
sudo nmcli device modify ens18 connection.id "ens18"
ありがとう
答え1
NetworkManagerの用語で言うと、装備NIC(またはNICの仮想抽象化)。つながる適切なネットワーク構成パラメーターのセットです。装備、特定のデバイスにのみ一致するように特に制限されない限り。この制限にもかかわらず、接続とデバイスは別々の構成オブジェクトです。。
1.)Wired connection <number>
は、一部のGUIツール(RHEL OSインストーラを含む)で使用されるデフォルトの接続名の形式であり、名前を指定せずに新しい接続を作成するときに使用されるデフォルトの名前です<interface name>
。このインターフェイスへの既存の接続定義です。nmcli
nmcli device connect <interface name>
2.) 特定の固有の方法を参照つながる名前、UUID、または D-Bus 接続パス番号 ( path <N>
for/org/freedesktop/NetworkManager/Settings/<N>
またはapath <N>
for /org/freedesktop/NetworkManager/ActiveConnection/<N>
) で構成されます。
「このデバイスのアクティブな接続は何ですか?」をすばやく参照するには、次のシェル機能を作成できます。
nm_connection_of() {
# $1 = name of network interface to query
con_name=$(nmcli -g GENERAL.CONNECTION device show "$1")
if [ "$con_name" = "" ]; then
echo "ERROR: no connection associated with $1" >&2
return 1
fi
echo "$con_name"
}
その後、次のように使用できます。
sudo nmcli connection modify "$(nm_connection_of ens18)" connection.id ens18
ネットワークインターフェイスは現在どの接続にも接続されていない可能性があり、その場合は$(nm_connection_of <interface name>)
エラーが返されます。
3.) この質問に直接回答しました。
接続名を変更するには、明示的に識別する必要があります。名前を変更する接続、一つでもない装備可能な接続数に関係なく、接続することも、まったく接続しないこともあります。