jest sposób na sprawdzenie numeru magistrali PCI interfejsu Ethernet i odwrotnie. Chcę napisać skrypt Bash / Python, który daje coś takiego
pci_address = some_function(eth0)
gdzie jest adres pci sys:bus:slot:function
. Jak te dwa elementy mogą być ze sobą powiązane?
lspci
czylshw
?lspci
ale nie próbowałemlshw
. Następujące polecenie działało dla mnielshw -class network -businfo
. Dzięki @SergOdpowiedzi:
lshw
ilspci
oba są w stanie pokazać te informacje. Jak już się dowiedziałeś, możesz to zrobićlshw -class network -businfo
. Na przykład oto mój wynik:Można także użyć
lspci -D
i potokować go,grep
aby odfiltrować konkretnie kontroler Ethernet. Oto mój przykład:Zauważ, że wraz z przejściem na systemd można było przewidzieć nazewnictwo interfejsów, aby po prostu spojrzeć na nazwę interfejsu i znaleźć informacje o PCI.
źródło
lspci
Nie podać nazwę urządzenia, więc w przypadku 2 identycznych urządzeń nie jest możliwe odróżnienie który adres i nazwę urządzenia PCI meczethtool pokaże ci także interfejs pci (informacje o autobusie :)
źródło
Te informacje są dostępne w sysfs, nie są potrzebne żadne pomocniki takie jak
lshw
/lspci
/ethtool
/udevadm
:źródło
Wygląda na to, że możesz powiązać je za pomocą IRQ.
wypisze urządzenia Ethernet, w tym Przerwanie.
na przykład.
podczas
podaje informacje o PCI z IRQ
na przykład.
ponieważ widzę, że oba mają 43 lata, mogę wywnioskować, że
eth2
pasują04:00.0
źródło
Inne rozwiązanie, przy użyciu
udevadm
{0..10}
- sprawdza initerfaces zeth0
…eth10
Dlatego możesz użyć tego polecenia
Przykładowe dane wyjściowe
Dlatego adres to
Lub w twoim przypadku za pomocą jednego polecenia
lub w skrypcie
Wywołaj skrypt za pomocą
Dane wyjściowe to
źródło
udevadm
! nauczyłem się czegoś nowego. +1lshw
i powyższe podejście dają mi dwa różne wyniki. Czy oba nie powinny podawać tego samego adresu pci? na zdrowie