Gibt es eine Möglichkeit, die PCI-Busnummer einer Ethernet-Schnittstelle herauszufinden oder umgekehrt? Ich möchte ein Bash / Python-Skript schreiben, das so etwas wie gibt
pci_address = some_function(eth0)
wo pci_address ist sys:bus:slot:function
. Wie können diese beiden Elemente miteinander in Beziehung gesetzt werden?
lspci
oderlshw
?lspci
, aber nicht versuchtlshw
. Der folgende Befehl hat bei mir funktioniertlshw -class network -businfo
. Danke @SergAntworten:
lshw
undlspci
sind beide in der Lage, diese Informationen anzuzeigen. Wie Sie bereits herausgefunden haben, können Sie dies tunlshw -class network -businfo
. Hier ist zum Beispiel meine Ausgabe:Sie können es auch verwenden
lspci -D
und weiterleiten,grep
um den Ethernet-Controller gezielt herauszufiltern. Hier ist mein Beispiel:Beachten Sie, dass mit dem Übergang zu systemd , von verwenden könnte Vorhersehbare Schnittstelle Naming nur Blick auf die Schnittstellennamen PCI Informationen zu erfahren.
quelle
lspci
gibt den Gerätenamen nicht an, so dass bei 2 identischen Geräten nicht unterschieden werden kann, welche PCI-Adresse und welcher Gerätename übereinstimmenethtool zeigt dir auch pci für eine Schnittstelle (Bus-Info :)
quelle
Diese Informationen sind in sysfs verfügbar. Es werden keine Helfer wie
lshw
/lspci
/ethtool
/udevadm
benötigt:quelle
Es sieht so aus, als könnten Sie sie vom IRQ zusammenbinden.
druckt die Ethernet-Geräte einschließlich Interrupt.
z.B.
während
gibt die PCI-Informationen mit IRQ an
z.B.
da ich sehe, dass beide 43 sind, kann ich daraus schließen, dass sie
eth2
übereinstimmen04:00.0
quelle
Eine andere Lösung mit
udevadm
{0..10}
- prüft die Initerfaces voneth0
…eth10
Daher können Sie diesen Befehl verwenden
Beispielausgabe
Daher lautet die Adresse
Oder in Ihrem Fall mit einem einzigen Befehl
oder in einem Skript
Rufen Sie das Skript mit auf
Ausgabe ist
quelle
udevadm
! etwas Neues gelernt. +1lshw
Ansatz von @AB und höher gibt mir zwei unterschiedliche Ergebnisse. Sollten nicht beide dieselbe PCI-Adresse angeben? Prost