![如何在 Linux 中找到网络接口的主控](https://linux22.com/image/137469/%E5%A6%82%E4%BD%95%E5%9C%A8%20Linux%20%E4%B8%AD%E6%89%BE%E5%88%B0%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%E7%9A%84%E4%B8%BB%E6%8E%A7.png)
我需要从 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 风格的方式来阅读这个吗?或者一个可以只输出接口主控的命令?
答案1
您可以编写一个脚本来通过执行以下操作来收集此信息(这可能是ip
和ifconfig
do )
去
/sys/class/net
sysfs 文件系统中存在指向所有网络适配器的符号链接。与物理硬件对应的符号链接到
../../devices/pciXXXX:XX/...
,其他符号链接到../../devices/virtual
。如果您
cd
访问虚拟接口之一,则会有一个master
符号链接指向该接口的主接口。如果没有大师,这个可能就不会存在。