existe-t-il un moyen de connaître le numéro de bus PCI d'une interface Ethernet ou vice versa. Je cherche à écrire un script Bash / Python qui donne quelque chose comme
pci_address = some_function(eth0)
où est pci_address sys:bus:slot:function
. Comment ces deux éléments peuvent-ils être liés l'un à l'autre?
lspci
oulshw
?lspci
mais je n'ai pas essayélshw
. La commande suivante a fonctionné pour moilshw -class network -businfo
. Merci @SergRéponses:
lshw
etlspci
sont tous deux capables de montrer cette information. Comme vous l'avez déjà découvert, vous pouvez le fairelshw -class network -businfo
. Par exemple, voici ma sortie:Ce que vous pourriez également utiliser, c'est le
lspci -D
dirigergrep
pour filtrer spécifiquement le contrôleur Ethernet. Voici mon exemple:Notez qu'avec la transition vers systemd , on pourrait utiliser la dénomination d'interface prévisible pour simplement regarder le nom de l'interface pour trouver les informations PCI.
la source
lspci
ne fournit pas le nom de l'appareil, donc dans le cas de 2 appareils identiques, il n'est pas possible de distinguer quelle adresse pci etethtool vous montrera également pci pour une interface (bus-info :)
la source
Ces informations sont disponibles dans sysfs, aucun assistant comme
lshw
/lspci
/ethtool
/udevadm
n'est nécessaire:la source
Il semble que vous pouvez les relier par l'IRQ.
imprimera les périphériques Ethernet, y compris Interruption.
par exemple.
tandis que
donne les informations PCI avec IRQ
par exemple.
puisque je vois que les deux ont 43 ans, je peux déduire que cela
eth2
correspond04:00.0
la source
Une autre solution, en utilisant
udevadm
{0..10}
- vérifie les initerfaces deeth0
…eth10
Vous pouvez donc utiliser cette commande
Exemple de sortie
L'adresse est donc
Ou dans votre cas avec une seule commande
ou dans un script
Appelez le script avec
La sortie est
la source
udevadm
! appris quelque chose de nouveau. +1lshw
et l'approche ci-dessus me donnent deux résultats différents. Les deux ne devraient-ils pas fournir la même adresse pci? cheers