Bagaimana cara memeriksa status fisik port ethernet di Linux?

64

Saya ingin memeriksa apakah ethX tertentu secara fisik naik atau turun. Bagaimana saya melakukannya dengan baris perintah?

Jader Dias
sumber

Jawaban:

68

$ ethtool <eth?>

Sebagai contoh:

$ ethtool eth0

menyediakan:

Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000001 (1)
        Link detected: yes
Destroyica
sumber
46

Periksa /sys/class/net/eth0/operstatedan file lain dalam direktori ini.

Sejauh yang saya tahu ini khusus untuk Linux 2.6+, tetapi ia menyediakan antarmuka yang bersih untuk driver kernel.

Dokumentasi lengkap untuk bagian syssistem file ini dapat ditemukan di sini:

https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net

Linuxtraveler
sumber
10
/ sys / class / net / eth0 / carrier adalah jawaban sempurna untuk pertanyaan ini bagi saya.
Per Knytt
Jawaban yang bagus Tambahan kecil: / run / network / ifstate juga memiliki beberapa informasi yang berguna.
Paulo André Haacke
34

ethtool [interface]

baris terakhir menunjukkan apa yang Anda inginkan:

# ethtool eth0
Pengaturan untuk eth0:
        Port yang didukung: [TP]
        Mode tautan yang didukung: 10baseT / Half 10baseT / Full 
                                100baseT / Setengah 100baseT / Penuh 
                                1000baseT / Penuh 
        Mendukung negosiasi otomatis: Ya
        Mode tautan yang diiklankan: 10baseT / Half 10baseT / Full 
                                100baseT / Setengah 100baseT / Penuh 
                                1000baseT / Penuh 
        Negosiasi otomatis yang diiklankan: Ya
        Kecepatan: 1000Mb / s
        Dupleks: Penuh
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Negosiasi otomatis: aktif
        Mendukung Wake-on: g
        Bangun: d
        Level pesan saat ini: 0x00000037 (55)
        Tautan terdeteksi: ya
Kurt
sumber
4
Jika Anda memeriksanya: en.wikipedia.org/wiki/OSI_model . Anda akan melihat bahwa baris terakhir adalah tentang lapisan lain: lapisan tautan. Saya baru saja menguji ini. Dengan kabel yang buruk lapisan fisiknya naik, tetapi bukan lapisan tautan. Lalu saya beralih ke kabel lain dan semua lapisan muncul.
Jader Dias
25
ip link show

adalah yang lain. Bagus tua

ifconfig dev_name

atau

ifconfig -a

juga akan memberi tahu Anda jika antarmuka sudah habis. CATATAN: Berhati-hatilah dengan metode ini karena mereka dapat menunjukkan informasi yang ketinggalan zaman tentang keadaan tautan.

goo
sumber
Saya pikir ini adalah jawaban terbaik - ethtool bukan standar dalam distribusi Ubuntu saya, jadi tidak membantu jika pada kotak tidak terhubung ke internet.
user20010
4
Saya percaya ifconfig terkadang akan menampilkan data yang ketinggalan zaman. Ia dapat menampilkan UP ketika tautannya down, tetapi antarmuka ethtool akan selalu menampilkan info yang benar AFAIK.
sed_and_done
2
Saya pikir @sed_and_done benar. Pada Red Hat VM, jika saya memutus NIC, ethtool segera menunjukkan Link detected: noalih-alih Link detected: yes, dan show ip menunjukkan, <NO-CARRIER,BROADCAST,MULTICAST,UP>bukan <BROADCAST,MULTICAST,UP,LOWER_UP>, tetapi ifconfig -a menunjukkan UP BROADCAST MULTICAST MTU:1500 Metric:1, yang sama dengan ketika NIC terhubung.
Adi Inbar
16
dmesg | grep eth

Anda akan melihat semua perubahan status

lepole
sumber
Ini adalah satu-satunya yang berfungsi jika seseorang tidak memiliki hak admin.
Brian B
dmesg membutuhkan root pada Slackware 14.0
AnonymousLurker
Tidak, tidak. Saya baru saja memeriksa - sementara itu berfungsi untuk saya di eth0perangkat, tetapi tidak di eth2perangkat.
Hi-Angel
9

Anda juga dapat menggunakan mii-tool untuk melihat apakah tautannya sudah habis dan memeriksa kecepatan yang dinegosiasikan.

# mii-tool
eth0: negosiasi 100baseTx-FD, tautan ok

Alakdae
sumber
4
mii-tool sudah usang dan tidak berfungsi untuk antarmuka GbE.
Dave Cheney
2
@DaveCheney# mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok
stolsvik
Halaman manual untuk mii-tool menyarankan menggunakan ethtool. Namun, mii-tool terus melakukan tugasnya, lebih berguna jika diberi opsi -v (verbose).
David Ramirez
3

Anda dapat memiliki detail lengkap dengan perintah di bawah ini

ethtool eth0

Dan jika Anda hanya ingin melihat status tautan, berikan perintah di bawah ini

mii-tool eth0
Nikunj Ranpura
sumber
2

Jika sistem Anda menggunakan ifplugd(mis. Pada Raspberry Pi dengan Raspbian) maka Anda dapat menggunakan alat status terkait ifplugstatusuntuk mendapatkan status tautan semua antarmuka:

ifplugstatus

atau antarmuka spesifik (mis. eth0):

ifplugstatus eth0
Pierz
sumber
2

netplugd adalah layanan yang dapat menjalankan program ketika kabel dicolokkan atau kabel dicabut. Jadi baris perintahnya adalah untuk grep / var / log / messages atau dmesg untuk output netplugd.

rjt
sumber
Yah, bukan jawaban yang diminta, tapi jawaban yang menarik untuk diketahui. Setidaknya untuk saya.
Sopalajo de Arrierez
2

Untuk menambahkan jawaban @ goo dengan cepat , Anda dapat menginterpretasikan ip linkatau ip link show INTERFACEsebagai berikut.

Ini adalah port yang secara administratif naik, tetapi secara fisik turun:

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

Dengan kata lain, UPAnda dapat melihat bahwa sistem dikonfigurasikan untuk mencoba dan menggunakan NIC untuk jaringan. Di NO-CARRIERsini, Anda diberi tahu apa masalah yang mencegah jaringan bekerja.

Ini adalah port yang secara administratif turun (lapisan fisiknya 'naik', secara teknis - ini adalah VM):

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

Akhirnya, port ini berfungsi normal:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000

Secara administratif UP, LOWER_UPmenunjukkan lapisan fisik berfungsi (yaitu ada pembawa), dan yang kedua UPmengkonfirmasi (pada dasarnya) lapisan IP naik.

iwaseatenbyagrue
sumber