web-dev-qa-db-ja.com

アクティブなネットワークインターフェイスの名前のみを取得します

Linuxで、コマンドライン(またはシェルスクリプト)からアクティブなネットワークインターフェイスの名前のみを取得するにはどうすればよいですか?複数のアクティブなインターフェースがある場合は、1つだけ(任意に選択)が必要です。

3
aurelien

これを行う最新の方法は、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に指示します。

7
terdon
ifconfig | sed 's/[ \t].*//;/^\(lo\|\)$/d'
1
Maslov Anton