![/sys를 거치지 않고 네트워크 인터페이스 색인을 얻을 수 있습니까?](https://linux55.com/image/41662/%2Fsys%EB%A5%BC%20%EA%B1%B0%EC%B9%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%20%EC%83%89%EC%9D%B8%EC%9D%84%20%EC%96%BB%EC%9D%84%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
그래서 내가 찾고 있는 것은 인터페이스 색인(또는 이름)이지만 실제적인 것입니다. 나에게 도움이되지 않는 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