lspci
이더넷 장치만 표시하도록 명령 출력을 제한할 수 있는지 확인해 보세요 . 스위치 -d
가 작동할 것 같지만 제가 시도한 어떤 것도 작동하지 않았습니다. 예를 들어:
lspci -d '*:*:02'
아직 표시 중모두PCI 장치 클래스. 나는 02
여기에 있는 값을 기반으로 클래스로 사용하고 있습니다.http://pci-ids.ucw.cz/read/PD/02
참고로 스위치에 대한 "man lspci" 정보는 다음과 같습니다 -d
.
-d [<공급업체>]:[<장치>][:<클래스>] 지정된 공급업체, 장치 및 카테고리 ID가 있는 장치만 표시합니다. ID는 16진수로 지정되며 생략되거나 "*"로 지정될 수 있으며 둘 다 "모든 값"을 의미합니다.
현재 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
내 시스템에는 클래스를 표시하기 위한 display -d 옵션이 없지만 기계 판독 모드에서 이름을 가져와서 클래스를 파악할 수 있습니다. 지금 바로:
$ lspci -vmm | grep -B1 -A2 '^Class.*Ethernet'
Slot: 08:00.0
Class: Ethernet controller
Vendor: Intel Corporation
Device: 82574L Gigabit Network Connection
또 다른 옵션은 sysfs를 직접 사용하는 것입니다. 즉, 모달리아의 "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