どの論理ネットワークインターフェイスがどの物理ネットワークカードにマップされているかを示すスクリプトソリューションを探しています。
つまり、サーバーに2つ以上のインターフェイスと2つ以上のネットワークカードがある場合、どのネットワークカードにどのインターフェイスが含まれているかをどうやって知ることができますか?つまり、ethX インターフェイスはネイティブ ______ NIC ハードウェアにマッピングされます。
今すぐ入手できる最も近い方法は、2つのコマンドを使用して結果を比較することです。私はインストールされている他のツール/パッケージに頼らず、幅広い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
...
これら2つの出力では、インターフェイス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
ファイルシステムを調べて、より良いマッピングが見つかるかどうかを確認してください。