Ip
如何在 Linux 中找到網路介面的主人
我需要從 bash 腳本中讀取網路介面的主控。
比如我有這兩個介面…
$ 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 風格的方式來閱讀這個?或者一個可以只輸出介面主控的命令?
您可以通過執行以下操作編寫一個收集此資訊的腳本(這可能是什麼
ip
和ifconfig
做什麼)
- 去
/sys/class/net
- sysfs 文件系統中的所有網路適配器都有符號連結。對應於物理硬體的符號連結到
../../devices/pciXXXX:XX/...
,其他符號連結到../../devices/virtual
。- 如果您
cd
訪問其中一個虛擬介面,則會有一個master
符號連結指向該介面的主介面。如果沒有主人,這可能就不存在了。