¿Hay alguna manera de averiguar el número de bus PCI de una interfaz Ethernet o viceversa? Estoy buscando escribir un script Bash / Python que dé algo como
pci_address = some_function(eth0)
donde está pci_address sys:bus:slot:function
. ¿Cómo se pueden relacionar estos dos elementos entre sí?
lspci
olshw
?lspci
pero no lo intentélshw
. El siguiente comando funcionó para mílshw -class network -businfo
. Gracias @SergRespuestas:
lshw
ylspci
ambos son capaces de mostrar esa información. Como ya has descubierto, puedes hacerlolshw -class network -businfo
. Por ejemplo, aquí está mi salida:Lo que también podría usar es
lspci -D
y canalizarlogrep
para filtrar específicamente el controlador de Ethernet. Aquí está mi ejemplo:Tenga en cuenta que con la transición a systemd , se podría usar el nombre de interfaz predecible para simplemente mirar el nombre de la interfaz para encontrar información de PCI.
fuente
lspci
no proporciona el nombre del dispositivo por lo que en caso de 2 dispositivos idénticos que no es posible distinguir qué dirección PCI y combinar el nombre del dispositivoethtool también le mostrará pci para una interfaz (bus-info :)
fuente
Esta información está disponible en sysfs, no se necesitan ayudantes como
lshw
/lspci
/ethtool
/udevadm
:fuente
Parece que puedes unirlos mediante el IRQ.
imprimirá los dispositivos de Ethernet, incluida la interrupción.
p.ej.
mientras
da la información PCI con IRQ
p.ej.
ya que veo que ambos son 43, puedo inferir que
eth2
coincide04:00.0
fuente
Otra solución, usando
udevadm
{0..10}
- comprueba las caras iniciales deeth0
...eth10
Por lo tanto, podría usar este comando
Salida de ejemplo
Por lo tanto, la dirección es
O en tu caso con un solo comando
o en un guión
Llame al guión con
La salida es
fuente
udevadm
! Aprendí algo nuevo. +1lshw
y el enfoque anterior me están dando dos resultados diferentes. ¿No deberían ambos proporcionar la misma dirección pci? aclamaciones