Як перевірити фізичний стан порта Ethernet в Linux?


64

Я хочу перевірити, чи вказаний ethX фізично підвищений або знижений. Як це зробити з командним рядком?

Відповіді:


68

$ ethtool <eth?>

Наприклад:

$ ethtool eth0

забезпечує:

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

Перевірте /sys/class/net/eth0/operstateта інші файли в цьому каталозі.

Наскільки я знаю, це характерно для Linux 2.6+, але він забезпечує чистий інтерфейс до драйвера ядра.

Повну документацію для цієї частини sysфайлової системи можна знайти тут:

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


10
/ sys / class / net / eth0 / carrier була для мене ідеальною відповіддю на це питання.
Пер Кнітт

Чудова відповідь. Невеликий додаток: / run / network / ifstate теж має корисну інформацію.
Пауло Андре Хаакке

34

ethtool [interface]

останній рядок показує, що ви хочете:

# ethtool eth0
Налаштування eth0:
        Підтримувані порти: [TP]
        Підтримувані режими посилань: 10baseT / Половина 10baseT / Full 
                                100baseT / Половина 100baseT / Повна 
                                1000baseT / Повна 
        Підтримує автоматичні переговори: Так
        Рекламовані режими посилань: 10baseT / Половина 10baseT / Full 
                                100baseT / Половина 100baseT / Повна 
                                1000baseT / Повна 
        Рекламовані автодомовини: Так
        Швидкість: 1000Mb / s
        Дуплекс: Повний
        Порт: кручена пара
        PHYAD: 0
        Приймач: внутрішній
        Автомобільні переговори: на
        Підтримує пробудження: g
        Прокидання: буд
        Поточний рівень повідомлення: 0x00000037 (55)
        Виявлено посилання: так

4
Якщо ви перевірите це: en.wikipedia.org/wiki/OSI_model . Ви побачите, що останній рядок стосується іншого шару: шару зв’язку. Я щойно це перевірив. При поганому кабелі фізичний шар був піднятий, але не шар зв'язку. Потім я перейшов на інший кабель і всі шари підійшли.
Jader Dias

25
ip link show

інша. Добрий старий

ifconfig dev_name

або

ifconfig -a

також підкаже, чи працює інтерфейс. ПРИМІТКА. Будьте обережні з цими методами, оскільки вони можуть відображати застарілу інформацію про стан посилання.


Я думаю, що це була найкраща відповідь - ethtool не є стандартним у моєму відгоні Ubuntu, тому він не допомагає, якщо на коробці не підключено до мережі.
користувач20010

4
Я вважаю, що ifconfig інколи відображатиме застарілі дані Він може відображатися вгору, коли посилання не працює, але інтерфейс ethtool завжди буде відображати правильну інформацію AFAIK.
sed_and_done

2
Я думаю, що @sed_and_done вірно. У програмі VM Red Hat, якщо я відключаю NIC, ethtool негайно показується Link detected: noзамість Link detected: yes, а ip link show показує <NO-CARRIER,BROADCAST,MULTICAST,UP>замість <BROADCAST,MULTICAST,UP,LOWER_UP>, але ifconfig -a показує UP BROADCAST MULTICAST MTU:1500 Metric:1, що те саме, що і при підключенні NIC.
Аді Інбар

16
dmesg | grep eth

ви повинні побачити всі зміни статусу


Це єдиний, який працює, якщо не вистачає прав адміністратора.
Брайан Б

dmesg вимагає root на Slackware 14.0
AnonymousLurker

Ні, це не так. Я щойно перевірив - він працює на eth0пристрої, але він не працює на eth2пристрої.
Привіт-Ангел

9

Ви також можете скористатися mii-інструментом, щоб перевірити, чи працює посилання та перевірити узгоджену швидкість.

# mii-інструмент
eth0: узгоджено 100baseTx-FD, посилання ок


4
mii-інструмент застарілий і не працює для інтерфейсів GbE.
Дейв Чейні

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

Сторінка man для mii-tool пропонує використовувати ethtool. Однак, mii-tool продовжує виконувати свою роботу, корисніше, якщо дано параметр -v (багатослівний).
Девід Рамірес

3

Ви можете мати повну інформацію за допомогою команди нижче

ethtool eth0

І якщо ви просто хочете побачити статус посилання, дайте команду нижче

mii-tool eth0

2

Якщо ваша система використовує ifplugd(наприклад, на Raspberry Pi з Raspbian), ви можете використовувати пов'язаний інструмент стану ifplugstatusдля отримання статусу зв'язку всіх інтерфейсів:

ifplugstatus

або специфічний інтерфейс (наприклад, eth0):

ifplugstatus eth0

2

netplugd - це послуга, яка може запускати програми, коли підключено кабель або виймається кабель. Таким чином, командним рядком було б grep / var / log / messages або dmesg для виведення netplugd.


Ну, не зовсім запитувана відповідь, але цікава, яку слід знати. Принаймні для мене.
Sopalajo de Arrierez

2

Щоб швидко додати відповідь до @ goo , ви інтерпретували наступне ip linkчи ip link show INTERFACEнаступне.

Це порт, який знаходиться в адміністративному плані, але фізично знижений:

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

Іншими словами, UPви можете бачити, що система налаштована на спробу використання NIC для роботи в мережі. NO-CARRIERТут говорить вам , що проблема запобігання мережі від роботи є.

Це порт, який знаходиться в адміністративному плані (його фізичний рівень "вгору", технічно - це VM):

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

Нарешті, цей порт працює нормально:

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

Це адміністративно UP, LOWER_UPвказує, що фізичний рівень працює (тобто є носій), а другий UPпідтверджує (фактично) IP-рівень.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.