Jak sprawdzić stan fizyczny portu Ethernet w systemie Linux?


64

Chcę sprawdzić, czy określony ethX jest fizycznie w górę lub w dół. Jak to zrobić za pomocą wiersza polecenia?

Odpowiedzi:


68

$ ethtool <eth?>

Na przykład:

$ ethtool eth0

zapewnia:

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

46

Sprawdź /sys/class/net/eth0/operstatei inne pliki w tym katalogu.

O ile wiem, jest to specyficzne dla Linuksa 2.6+, ale zapewnia czysty interfejs do sterownika jądra.

Pełna dokumentacja dla tej części syssystemu plików znajduje się tutaj:

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


10
/ sys / class / net / eth0 / carrier była dla mnie idealną odpowiedzią na to pytanie.
Per Knytt

Świetna odpowiedź. Mały dodatek: / run / network / ifstate również zawiera przydatne informacje.
Paulo André Haacke

34

ethtool [interface]

ostatnia linia pokazuje, co chcesz:

# ethtool eth0
Ustawienia dla eth0:
        Obsługiwane porty: [TP]
        Obsługiwane tryby linków: 10baseT / Half 10baseT / Full 
                                100baseT / Half 100baseT / Full 
                                1000baseT / Full 
        Obsługuje automatyczne negocjacje: Tak
        Reklamowane tryby linków: 10baseT / Half 10baseT / Full 
                                100baseT / Half 100baseT / Full 
                                1000baseT / Full 
        Reklamowana autonegocjacja: Tak
        Prędkość: 1000 Mb / s
        Dupleks: Pełny
        Port: skrętka
        PHYAD: 0
        Transceiver: wewnętrzny
        Autonegocjacja: włączone
        Obsługuje budzenie: g
        Wake-on: d
        Aktualny poziom wiadomości: 0x00000037 (55)
        Wykryto link: tak

4
Jeśli to zaznaczysz : en.wikipedia.org/wiki/OSI_model . Zobaczysz, że ostatni wiersz dotyczy innej warstwy: warstwy łącza. Właśnie to przetestowałem. Przy złym kablu warstwa fizyczna była podniesiona, ale nie warstwa łącząca. Potem przełączyłem się na inny kabel i wszystkie warstwy się pojawiły.
Jader Dias

25
ip link show

jest inny. Dobry stary

ifconfig dev_name

lub

ifconfig -a

poinformuje również, czy interfejs jest włączony. UWAGA: Zachowaj ostrożność przy tych metodach, ponieważ mogą one wyświetlać nieaktualne informacje dotyczące stanu łącza.


Myślę, że to była najlepsza odpowiedź - ethtool nie jest standardem w mojej dystrybucji Ubuntu, więc nie pomaga, jeśli na pudełku nie jest podłączony do sieci.
user20010

4
Wierzę, że ifconfig czasami wyświetla nieaktualne dane. Może pokazać się, gdy link jest wyłączony, ale interfejs ethtool zawsze pokaże odpowiednie informacje AFAIK.
sed_and_done

2
Myślę, że @sed_and_done ma rację. Na Red Hat VM, gdybym odłączyć NIC, ethtool natychmiast pokazuje Link detected: nozamiast Link detected: yes, a łącza IP pokaz pokazuje <NO-CARRIER,BROADCAST,MULTICAST,UP>zamiast <BROADCAST,MULTICAST,UP,LOWER_UP>, ale ifconfig -a pokazy UP BROADCAST MULTICAST MTU:1500 Metric:1, która jest taka sama jak wtedy, gdy podłączony jest NIC.
Adi Inbar

16
dmesg | grep eth

powinieneś zobaczyć wszystkie zmiany statusu


To jedyny, który działa, jeśli nie ma uprawnień administratora.
Brian B

dmesg wymaga roota na Slackware 14.0
AnonymousLurker

Nie, nie ma. Właśnie sprawdziłem - podczas gdy działa dla mnie na eth0urządzeniu, ale nie działa na eth2urządzeniu.
Cześć Anioł

9

Możesz także użyć narzędzia mii, aby sprawdzić, czy link jest uruchomiony i sprawdzić wynegocjowaną prędkość.

# mii-tool
eth0: do uzgodnienia 100baseTx-FD, link ok


4
Narzędzie mii jest przestarzałe i nie działa w przypadku interfejsów GbE.
Dave Cheney

2
@DaveCheney# mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok
stolsvik

Strona podręcznika mii-tool sugeruje użycie ethtool. Jednak mii-tool nadal wykonuje swoje zadanie, bardziej przydatne, jeśli podano opcję -v (pełne).
David Ramirez

3

Możesz mieć pełne szczegóły za pomocą poniższego polecenia

ethtool eth0

A jeśli chcesz tylko zobaczyć status linku, podaj polecenie poniżej

mii-tool eth0

2

Jeśli Twój system używa ifplugd(np. Na Raspberry Pi z Raspbian), możesz użyć powiązanego narzędzia stanu, ifplugstatusaby uzyskać status łącza wszystkich interfejsów:

ifplugstatus

lub określony interfejs (np. eth0):

ifplugstatus eth0

2

netplugd to usługa, która może uruchamiać programy, gdy kabel jest podłączony lub kabel jest wyjęty. Zatem wierszem polecenia byłoby grep / var / log / messages lub dmesg dla wyjścia netplugd.


Cóż, nie do końca żądana odpowiedź, ale interesująca. Przynajmniej dla mnie.
Sopalajo de Arrierez

2

Aby szybko dodać do odpowiedzi @ goo , zinterpretowałbyś ip linklub ip link show INTERFACEw następujący sposób.

To jest port, który jest administracyjnie w górę, ale fizycznie w dół:

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

Innymi słowy, UPwidać, że system jest skonfigurowany do próby użycia karty sieciowej do pracy w sieci. NO-CARRIERTutaj mówi, co kwestia zapobiegania sieci od pracy jest.

To jest port, który jest administracyjnie wyłączony (jego warstwa fizyczna jest „podniesiona”, technicznie - jest to VM):

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

Wreszcie ten port działa normalnie:

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

Jest administracyjnie UPThe LOWER_UPwskazuje warstwa fizyczna pracuje (czyli nie jest nośnikiem), a drugie UPpotwierdza (w efekcie) warstwa IP jest gotowy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.