/sys를 거치지 않고 네트워크 인터페이스 색인을 얻을 수 있습니까?

/sys를 거치지 않고 네트워크 인터페이스 색인을 얻을 수 있습니까?

그래서 내가 찾고 있는 것은 인터페이스 색인(또는 이름)이지만 실제적인 것입니다. 나에게 도움이되지 않는 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

함수 호출을 통해 이를 수행할 수 있는 방법이 있습니까, 아니면 유일한 방법입니까 sysfs?

답변1

이 명령이 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

관련 정보