如何找到以太网接口的 PCI 地址?

Waq*_*qas 16 pci ethernet

有没有办法找出以太网接口的 PCI 总线编号,反之亦然。我正在寻找编写一个 Bash/Python 脚本,它给出了一些类似的东西

pci_address = some_function(eth0)

pci_address 在哪里sys:bus:slot:function。这两个元素如何相互关联?

Ser*_*nyy 22

lshw并且lspci都能够显示该信息。正如您已经发现的那样,您可以这样做lshw -class network -businfo。例如,这是我的输出:

$ sudo lshw -c network -businfo                                                                                                                    
Bus info          Device      Class       Description
=====================================================
pci@0000:0e:00.0  wlan0       network     RTL8187SE Wireless LAN Controller
pci@0000:14:00.0  eth0        network     RTL8101E/RTL8102E PCI Express Fast Ethernet controller
Run Code Online (Sandbox Code Playgroud)

您还可以使用lspci -D并将其通过管道传输grep到专门过滤掉以太网控制器。这是我的例子:

$ lspci -D | grep 'Network\|Ethernet'                                                                                                              
    0000:0e:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8187SE Wireless LAN Controller (rev 22)
    0000:14:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
Run Code Online (Sandbox Code Playgroud)

请注意,随着向systemd的过渡,您可以使用可预测的接口命名来查看接口名称以找出 PCI 信息。

  • `lspci` 不提供设备名称,因此如果有 2 个相同的设备,则无法区分哪个 pci 地址和设备名称匹配 (3认同)

Vla*_*eev 16

此信息在sysfs可用,没有帮手喜欢lshw/ lspci/ ethtool/udevadm需要:

$ grep PCI_SLOT_NAME /sys/class/net/*/device/uevent
/sys/class/net/enp4s0/device/uevent:PCI_SLOT_NAME=0000:04:00.0
/sys/class/net/wlp2s0/device/uevent:PCI_SLOT_NAME=0000:02:00.0
Run Code Online (Sandbox Code Playgroud)

  • 更直接的是,`$ ls -l /sys/class/net/eth0/device` `lrwxrwxrwx 1 root root 0 Nov 16 16:30 /sys/class/net/eth0/device -> ../../. ./0000:07:00.0` 虽然`device/uevent` 有一堆你可能还需要的其他有用的东西。 (2认同)

小智 10

ethtool 还将向您显示接口的 pci (bus-info:)

me@ubuntu:~$ ethtool -i eth0
driver: i40e
version: 1.5.16
firmware-version: 5.04 0x800024cd 0.0.0
bus-info: 0000:06:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
Run Code Online (Sandbox Code Playgroud)