尝试查看是否可以限制lspci
命令的输出以仅显示以太网设备。该-d
开关似乎应该可以工作,但我尝试过的任何方法都无法完成工作。例如:
lspci -d '*:*:02'
仍然显示全部pci 设备类。我02
根据此处找到的值用作类:http://pci-ids.ucw.cz/read/PD/02
作为参考,这里是交换机的“man lspci”信息-d
:
-d [<供应商>]:[<设备>][:<类>] 仅显示具有指定供应商、设备和类别 ID 的设备。 ID 以十六进制给出,可以省略或给出为“*”,两者均表示“任何值”。
我目前正在使用 grep 来过滤输出,这样就完成了工作:
lspci -vv | grep -A20 Ethernet
答案1
如果您删除*
并将类别值扩展到 4 位,则将获得所需的结果
$ lspci -d ::0200
81:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
81:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
更新:基于类的过滤器仅适用于 pciutils v3.3.0 或更高版本(请参阅变更日志)。对于 RHEL/CentOS,这意味着 7.3 或更高版本。
答案2
man lspci
在我的系统中没有显示 -d 选项可用于显示类,但您可以在机器可读模式下获取它们的名称,从而对其进行 grepping。即:
$ lspci -vmm | grep -B1 -A2 '^Class.*Ethernet'
Slot: 08:00.0
Class: Ethernet controller
Vendor: Intel Corporation
Device: 82574L Gigabit Network Connection
另一种选择是直接使用 sysfs。即您可以通过 modalias 中的“c02”字符串找到所有以太网设备:
$ find /sys/devices/ -name modalias | xargs grep -l c02
/sys/devices/pci0000:00/0000:00:1c.2/0000:03:00.0/modalias
^^^ PCI port
或使用 systool:
$ systool -b pci -A modalias | awk '
/modalias.*c02/ {
system("/sbin/lspci -s " dev); }
{ dev = $1; }'
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 11)
答案3
要获得您想要的结果,您需要使用此处找到的 pci ID,而不是您之前使用的:
例如,对于 vmware 以太网控制器,命令为:
lspci -d :07b0