是否可以不通过 /sys 获取网络接口索引?

UVV*_*UVV 12 sysfs ioctl network-interface

所以我正在寻找的是一个接口索引(或名称),但真正的。 if_nametoindex(3)并且ioctl(2)似乎没有帮助我在这里。现在我发现如何做到这一点的唯一方法是通过/sys. 让我举例说明我需要什么:

# cat /sys/class/net/bond0.1007/ifindex 
26
# cat /sys/class/net/bond0.1007/iflink
23                                  <-- I need either this or a reference to bond0
# cat /sys/class/net/bond0/ifindex 
23
Run Code Online (Sandbox Code Playgroud)

有没有办法通过函数调用来做到这一点,或者唯一的方法是sysfs

Bos*_*coe 4

该命令ip link show可能就是您想要的。它将在界面信息前面显示索引。以下示例来自具有绑定 NIC 的系统。

# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000000 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9214 qdisc mq master bond0 portid 000f53000001 state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 9214 qdisc noqueue state UP mode DEFAULT qlen 1000
    link/ether 00:0f:53:00:00:00 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)