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
마스터가 없었다면 아마도 이런 일은 존재하지 않았을 것입니다.