existe uma maneira de descobrir o número do barramento PCI de uma interface Ethernet ou vice-versa. Eu estou olhando para escrever um script Bash / Python que fornece algo como
pci_address = some_function(eth0)
onde pci_address é sys:bus:slot:function
. Como esses dois elementos podem ser relacionados entre si?
lspci
oulshw
?lspci
mas não tenteilshw
. O comando a seguir funcionou para mimlshw -class network -businfo
. Obrigado @SergRespostas:
lshw
elspci
são capazes de mostrar essas informações. Como você já descobriu, você pode fazerlshw -class network -businfo
. Por exemplo, aqui está minha saída:O que você também pode usar é
lspci -D
canalizá-logrep
para filtrar o controlador ethernet especificamente. Aqui está o meu exemplo:Observe que, com a transição para systemd , pode-se usar a Nomenclatura de interface previsível para apenas olhar o nome da interface e descobrir informações sobre PCI.
fonte
lspci
não fornece o nome do dispositivo para que no caso de 2 dispositivos idênticos não é possível distinguir qual endereço pci e combinar o nome do dispositivoO ethtool também mostrará o pci para uma interface (informações do barramento :)
fonte
Esta informação está disponível no sysfs, nenhum auxiliar como
lshw
/lspci
/ethtool
/udevadm
é necessário:fonte
Parece que você pode amarrá-los pelo IRQ.
imprimirá os dispositivos Ethernet, incluindo interrupção.
por exemplo.
enquanto
fornece as informações PCI com IRQ
por exemplo.
desde que eu vejo ambos são 43 eu posso inferir que
eth2
combina04:00.0
fonte
Outra solução, usando
udevadm
{0..10}
- verifica os initerfaces deeth0
…eth10
Portanto, você pode usar este comando
Saída de exemplo
Portanto, o endereço é
Ou no seu caso com um único comando
ou em um script
Chame o script com
Saída é
fonte
udevadm
,! aprendi algo novo. +1lshw
e a abordagem acima estão me dando dois resultados diferentes. Ambos não deveriam fornecer o mesmo endereço pci? Cheers