¿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í?

lspciolshw?lspcipero no lo intentélshw. El siguiente comando funcionó para mílshw -class network -businfo. Gracias @SergRespuestas:
lshwylspciambos 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 -Dy canalizarlogreppara 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
lspcino 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
eth2coincide04:00.0fuente
Otra solución, usando
udevadm{0..10}- comprueba las caras iniciales deeth0...eth10Por 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. +1lshwy el enfoque anterior me están dando dos resultados diferentes. ¿No deberían ambos proporcionar la misma dirección pci? aclamaciones