Linuxでは、コマンドライン(またはシェルスクリプト)からアクティブなネットワークインターフェイスの名前だけを取得するにはどうすればよいですか?アクティブなインターフェイスが複数ある場合は、1つだけを選択してください(任意に選択)。
答え1
現代的なアプローチはコマンドを使用することですip
。たとえば、ワイヤレス接続が有効なシステムでは、次の結果が表示されます。
$IP アドレスを表示 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 UNKNOWN グループのデフォルト リンク/ループバック00:00:00:00:00:00広い00:00:00:00:00:00 イントラネット127.0.0.1/8 スコープホスト lo 常に valid_lft 常に優先_lft イントラネット6::1/128 スコープホスト 常に valid_lft 常に優先_lft 2:eno1:<キャリアなし、ブロードキャスト、マルチキャスト、アップ> mtu 1500 qdisc fq_codelステータスDOWNグループデフォルト値qlen 1000 リンク/ether00:26:b9:dd:2c:28広いff:ff:ff:ff:ff:ff 3:wlp3s0b1:<BROADCAST、MULTICAST、UP、LOWER_UP> mtu 1500 qdisc mqステータスUPグループデフォルトqlen 1000 リンク/etherc4:46:19:5f:dc:f5広いff:ff:ff:ff:ff:ff イントラネット192.168.1.4/24広い192.168.1.255 範囲グローバル wlp3s0b1 ← 常に valid_lft 常に優先_lft イントラネット6 fe80::c646:19ff:fe5f:dcf5/64 範囲リンク 常に valid_lft 常に優先_lft 16: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue 状態 不明なグループ デフォルト値 qlen 100 リンク/なし イントラネット123.167.217.2/24広い123.167.217.255 範囲グローバル tun0 ← 常に valid_lft 常に優先_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
最初の一致を見つけた後、検索を停止するように指示します。
答え2
ifconfig | sed 's/[ \t].*//;/^\(lo\|\)$/d'