Linuxでネットワークインタフェースのマスターを見つける方法

Linuxでネットワークインタフェースのマスターを見つける方法

Bashスクリプトからネットワークインタフェースの重要な情報を読む必要があります。

たとえば、次の 2 つのインターフェイスがあります。

$ ip link show tap0
4: tap0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop master br0 state DOWN mode DEFAULT group default qlen 1000
    link/ether c6:3f:96:13:02:25 brd ff:ff:ff:ff:ff:ff
$ ip link show br0
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 30:9c:23:75:ad:b1 brd ff:ff:ff:ff:ff:ff

インターフェイス名が与えられたら、そのインターフェイスのマスターを探す必要があるので、tap0->"br0"br0->""

ip link show

ip link show tap0 | head -n1 | sed 's/.*master \([^ ]*\).*/\1/' | grep -v " "

どの出力br0(またはtap0マスターなしのデバイスと交換した場合は何も出力されません)

しかし、私はこの情報を読むより強力な方法を好みます。これを読むprocfsスタイルの方法はありますか?それともインターフェイスマスターのみを出力できるコマンドですか?

ベストアンサー1

次のようにして、この情報を収集するスクリプトを作成できます(おそらくipそうifconfigです)。

  • 行く/sys/class/net

  • sysfs ファイルシステムには、すべてのネットワークアダプタへのシンボリックリンクがあります。物理ハードウェアに対応する記号はに接続され../../devices/pciXXXX:XX/...、他の記号はに接続されます../../devices/virtual

  • 仮想インターフェイスの1つにアクセスすると、そのインターフェイスのプライマリインターフェイスを指すシンボリックリンクがcdあります。masterマスターがなければ、おそらくこれは存在しなかったでしょう。

おすすめ記事