어떤 논리적 네트워크 인터페이스가 어떤 물리적 네트워크 카드에 매핑되어 있는지 보여주는 스크립트 솔루션을 찾고 있습니다.
즉, 서버에 2개 이상의 인터페이스와 2개 이상의 네트워크 카드가 있는 경우 어떤 네트워크 카드에 어떤 인터페이스가 포함되어 있는지 어떻게 알 수 있습니까? 즉, ethX 인터페이스는 기본 ______ NIC 하드웨어에 매핑됩니다.
지금 당장 얻을 수 있는 가장 가까운 방법은 두 개의 명령을 사용한 다음 결과를 비교하는 것입니다. 나는 설치된 다른 도구/패키지에 의존하지 않고 광범위한 Linux 설치에서 작동하기를 원하기 때문에 가능한 가장 다재다능한 *nix 명령을 사용하려고 노력하고 있습니다. (일반적으로 나에게는 아무것도 설치할 수 있는 권한이나 권한이 없습니다.)
명령 1은 인터페이스 이름과 MAC 주소를 반환합니다. MAC 주소는 일반적으로 변경할 수 없으므로 신뢰할 수 있는 참조 지점을 제공합니다. 인터페이스 이름은 라벨이며 참조용입니다.
> ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 14:18:77:27:c1:32 brd ff:ff:ff:ff:ff:ff
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 14:18:77:27:c1:33 brd ff:ff:ff:ff:ff:ff
4: sci0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT qlen 1000
link/ether 14:18:77:27:c1:34 brd ff:ff:ff:ff:ff:ff
5: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
link/ether 14:18:77:27:c1:35 brd ff:ff:ff:ff:ff:ff
명령 2:
>lspci -vd ::0200
01:00.0 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
Subsystem: Dell Device 1f5b
Flags: bus master, fast devsel, latency 0, IRQ 55, NUMA node 0
Memory at 91b30000 (64-bit, prefetchable) [size=64K]
Memory at 91b40000 (64-bit, prefetchable) [size=64K]
Memory at 91b50000 (64-bit, prefetchable) [size=64K]
Expansion ROM at 92700000 [disabled] [size=256K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=17 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 00-00-14-18-77-27-c1-32
Capabilities: [150] Power Budgeting <?>
Capabilities: [160] Virtual Channel
Kernel driver in use: tg3
Kernel modules: tg
01:00.1 Ethernet controller: Broadcom Limited NetXtreme BCM5720 Gigabit Ethernet PCIe
Subsystem: Dell Device 1f5b
Flags: bus master, fast devsel, latency 0, IRQ 57, NUMA node 0
Memory at 91b00000 (64-bit, prefetchable) [size=64K]
Memory at 91b10000 (64-bit, prefetchable) [size=64K]
Memory at 91b20000 (64-bit, prefetchable) [size=64K]
Expansion ROM at 92740000 [disabled] [size=256K]
Capabilities: [48] Power Management version 3
Capabilities: [50] Vital Product Data
Capabilities: [58] MSI: Enable- Count=1/8 Maskable- 64bit+
Capabilities: [a0] MSI-X: Enable+ Count=17 Masked-
Capabilities: [ac] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [13c] Device Serial Number 00-00-14-18-77-27-c1-33
...
이 두 출력에서 인터페이스 MAC 주소와 장치 일련 번호를 사용하여 eth0의 인터페이스를 물리적 NIC에 매핑할 수 있습니다.
이것을 더 직접적으로 볼 수 있는 방법이 있나요?
이를 원격 검색으로 처리하려면 스크립트 방식이 필요합니다.
일부 제한으로 인해 이 명령은 출력 파이프를 사용할 수 없습니다. 따라서 grep, awk 등이 필요하지 않습니다. 코드를 자르고 결과를 비교할 수 있습니다.
감사해요.
답변1
파일 시스템의 정보를 사용할 수 있습니다 /sys
. 내 상자는 "예측 가능한 장치 이름"을 사용하지 않지만 내 시스템에는 다음과 같은 내용이 표시됩니다.
$ ll /sys/class/net
total 0
lrwxrwxrwx 1 root root 0 Jul 14 18:26 eth0 -> ../../devices/pci0000:00/0000:00:1c.4/0000:06:00.0/net/eth0
lrwxrwxrwx 1 root root 0 Jul 14 18:26 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 Jul 14 18:26 wlan0 -> ../../devices/pci0000:00/0000:00:1c.3/0000:04:00.0/0000:05:00.0/net/wlan0
lrwxrwxrwx 1 root root 0 Jul 14 18:26 wlan1 -> ../../devices/pci0000:00/0000:00:1c.1/0000:02:00.0/net/wlan1
따라서 심볼릭 링크를 통해 어떤 인터페이스가 어떤 물리적 카드에 속하는지 직접 확인할 수 있습니다.
이 특정 매핑이 필요하지 않고 다른 매핑이 필요한 경우 /sys
파일 시스템을 살펴보고 더 나은 매핑을 찾을 수 있는지 확인하세요.