どの lspci コマンドラインスイッチが出力を「イーサネット」デバイスに限定するのですか?

どの lspci コマンドラインスイッチが出力を「イーサネット」デバイスに限定するのですか?

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を使用する必要があります。

http://pci-ids.ucw.cz/

たとえば、vmwareイーサネットコントローラの場合、コマンドは次のようになります。

lspci -d :07b0

関連情報