apakah ada cara untuk mengetahui nomor bus PCI dari antarmuka Ethernet atau sebaliknya. Saya mencari untuk menulis skrip Bash / Python yang memberikan beberapa hal seperti
pci_address = some_function(eth0)
dimana pci_address berada sys:bus:slot:function
. Bagaimana kedua elemen ini saling terkait?
lspci
ataulshw
?lspci
tetapi tidak mencobalshw
. Perintah berikut bekerja untuk sayalshw -class network -businfo
. Terima kasih @ergJawaban:
lshw
danlspci
keduanya mampu menunjukkan informasi itu. Seperti yang sudah Anda ketahui, Anda bisa melakukannyalshw -class network -businfo
. Sebagai contoh, inilah hasil saya:Apa yang juga bisa Anda gunakan adalah
lspci -D
dan pipa itugrep
untuk menyaring pengontrol ethernet secara khusus. Inilah contoh saya:Perhatikan bahwa dengan transisi ke systemd , orang dapat menggunakan Penamaan Antarmuka yang Dapat Diprediksi untuk hanya melihat nama antarmuka untuk mengetahui informasi PCI.
sumber
lspci
tidak memberikan nama perangkat sehingga dalam kasus 2 perangkat yang identik tidak mungkin membedakan alamat pci dan nama perangkat yang cocokethtool juga akan menampilkan pci untuk antarmuka (info bus :)
sumber
Informasi ini tersedia di sysfs, tidak ada pembantu seperti
lshw
/lspci
/ethtool
/udevadm
yang dibutuhkan:sumber
Sepertinya Anda bisa mengikat mereka bersama oleh IRQ.
akan mencetak perangkat ethernet termasuk Interrupt.
misalnya.
sementara
memberikan info PCI dengan IRQ
misalnya.
karena saya melihat keduanya adalah 43 saya dapat menyimpulkan bahwa
eth2
pertandingan04:00.0
sumber
Solusi lain, menggunakan
udevadm
{0..10}
- Periksa initerfaces darieth0
...eth10
Karena itu Anda dapat menggunakan perintah ini
Contoh output
Karena itu alamatnya
Atau dalam kasus Anda dengan satu perintah
atau dalam naskah
Panggil skripnya dengan
Output adalah
sumber
udevadm
! belajar sesuatu yang baru. +1lshw
dan pendekatan di atas memberi saya dua hasil yang berbeda. Bukankah keduanya harus memberikan alamat pci yang sama? Cheers