Есть ли способ узнать номер шины PCI интерфейса Ethernet или наоборот. Я ищу написать сценарий Bash / Python, который дает что-то вроде
pci_address = some_function(eth0)
где адрес pci_address sys:bus:slot:function
. Как эти два элемента могут быть связаны друг с другом?
lspci
илиlshw
?lspci
но не пыталсяlshw
. Следующая команда работала для меняlshw -class network -businfo
. Благодаря @SergОтветы:
lshw
иlspci
оба способны показать эту информацию. Как вы уже узнали, вы можете сделатьlshw -class network -businfo
. Например, вот мой вывод:То, что вы также могли бы использовать,
lspci -D
и направить егоgrep
для специальной фильтрации контроллера Ethernet. Вот мой пример:Обратите внимание, что с переходом на systemd можно использовать Predictable Interface Naming, чтобы просто посмотреть на имя интерфейса и узнать информацию о PCI.
источник
lspci
не предоставляет имя устройства, поэтому в случае двух идентичных устройств невозможно различить, какой адрес pci и имя устройства совпадаютethtool также покажет вам pci для интерфейса (bus-info :)
источник
Эта информация доступна в sysfs, такие помощники, как
lshw
/lspci
/ethtool
/udevadm
не нужны:источник
Похоже, вы можете связать их вместе с помощью IRQ.
будет печатать устройства Ethernet, включая прерывание.
например.
пока
дает информацию о PCI с IRQ
например.
так как я вижу, как 43, я могу сделать вывод, что
eth2
соответствует04:00.0
источник
Другое решение, использующее
udevadm
{0..10}
- проверяет инициалы изeth0
...eth10
Поэтому вы можете использовать эту команду
Пример вывода
Поэтому адрес
Или в вашем случае с одной командой
или в сценарии
Назовите сценарий с
Выход
источник
udevadm
,! узнал что-то новое. +1lshw
и выше подход дают мне два разных результата. Не должны ли оба предоставить один и тот же адрес pci? ура