Linuxで、コマンドライン(またはシェルスクリプト)からアクティブなネットワークインターフェイスの名前のみを取得するにはどうすればよいですか?複数のアクティブなインターフェースがある場合は、1つだけ(任意に選択)が必要です。
これを行う最新の方法は、ip
コマンドを使用することです。たとえば、ワイヤレス接続がアクティブになっているシステムでは、次のようになります。
$ ip addr show 1:lo:<LOOPBACK、UP、LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8スコープHost lo valid_lft forever preferred_lft forever イネット6 :: 1/128スコープホスト valid_lftforeverpreferred_lftforever 2:eno1:<NO-CARRIER、BROADCAST、MULTICAST、UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000 link/ether 00:26:b9:dd:2c:28 brd ff:ff:ff:ff:ff:ff 3:wlp3s0b1:<BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether c4:46 :19:5f:dc:f5 brd ff:ff:ff:ff:ff:ff inet 192.168.1.4/24 brd 192.168.1.255スコープグローバルwlp3s0b1 ← valid_lft forever Preferred_lft forever イネット6 fe80 :: c646:19ff:fe5f:dcf5/64スコープリンク valid_lft forever Preferred_lft forever 16:tun0:<POINTOPOINT、MULTICAST、NOARP、UP、LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 123.167.217.2/24 brd 123.167.217.255スコープグローバルtun0 ← valid_lft永久にpreferred_lft永久に
アクティブなインターフェイスには、inet
エントリとブロードキャスト(brd
)アドレスの両方があります。このようなすべてのインターフェイスを次のように表示できます。
$ ip addr show | awk '/inet.*brd/{print $NF}'
wlp3s0b1
tun0
1つだけが必要な場合は、次の方法で最初のもの(のみ)を取得できます。
$ ip addr show | awk '/inet.*brd/{print $NF; exit}'
wlp3s0b1
exit
ステートメントは、最初の一致が見つかった後、検索を停止するようにawk
に指示します。
ifconfig | sed 's/[ \t].*//;/^\(lo\|\)$/d'