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

다음을 수행하여 이 정보를 수집하는 스크립트를 작성할 수 있습니다(아마도 ip그럴 ifconfig것입니다).

  • 가다/sys/class/net

  • sysfs 파일 시스템에는 모든 네트워크 어댑터에 대한 심볼릭 링크가 있습니다. 물리적 하드웨어에 해당하는 기호는 에 연결되고 ../../devices/pciXXXX:XX/..., 다른 기호는 에 연결됩니다 ../../devices/virtual.

  • 가상 인터페이스 중 하나에 액세스 하면 해당 인터페이스의 기본 인터페이스를 가리키는 심볼릭 링크가 cd있습니다 . master마스터가 없었다면 아마도 이런 일은 존재하지 않았을 것입니다.

관련 정보