如何在 Linux 中找到网络接口的主控

如何在 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 风格的方式来阅读这个吗?或者一个可以只输出接口主控的命令?

答案1

您可以编写一个脚本来通过执行以下操作来收集此信息(这可能是ipifconfigdo )

  • /sys/class/net

  • sysfs 文件系统中存在指向所有网络适配器的符号链接。与物理硬件对应的符号链接到../../devices/pciXXXX:XX/...,其他符号链接到../../devices/virtual

  • 如果您cd访问虚拟接口之一,则会有一个master符号链接指向该接口的主接口。如果没有大师,这个可能就不会存在。

相关内容