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
マスターがなければ、おそらくこれは存在しなかったでしょう。