Вопрос: Как проверить физический статус Ethernet-порта в Linux?


Я хочу проверить, физически ли указан указанный ethX вверх или вниз. Как это сделать с командной строкой?


58
2018-05-30 19:20


Источник




Ответы:


$ 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

61
2018-05-30 19:21





Проверьте /sys/class/net/eth0/operstate и другие файлы в этом каталоге.

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

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

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


41
2018-01-20 09:19



/ sys / class / net / eth0 / carrier был идеальным ответом на этот вопрос для меня. - Per Knytt
Отличный ответ. Небольшое добавление: / run / network / ifstate также содержит полезную информацию. - Paulo André Haacke


ethtool [interface]

последняя строка показывает, что вы хотите:

# ethtool eth0
Настройки для eth0:
        Поддерживаемые порты: [TP]
        Поддерживаемые режимы связи: 10baseT / Half 10baseT / Full
                                100baseT / Half 100baseT / Full
                                1000baseT / Full
        Поддерживает автоматическое согласование: Да
        Рекламируемые режимы ссылок: 10baseT / Half 10baseT / Full
                                100baseT / Half 100baseT / Full
                                1000baseT / Full
        Рекламируемые автообмена: Да
        Скорость: 1000 Мбит / с
        Дуплекс: полный
        Порт: витая пара
        PHYAD: 0
        Приемопередатчик: внутренний
        Автосоглашение: по
        Поддержка Wake-on: g
        Пробуждение: d
        Текущий уровень сообщения: 0x00000037 (55)
        Связь обнаружена: да

33
2018-05-30 19:28



Если вы проверите это: en.wikipedia.org/wiki/OSI_model , Вы увидите, что последняя строка относится к другому слою: канальный уровень. Я просто проверил это. С плохим кабелем физический уровень поднялся, но не связанный уровень. Затем я переключился на другой кабель, и все слои подошли. - Jader Dias


ip link show

Другой. Старый добрый

ifconfig dev_name

или

ifconfig -a

также расскажет вам, находится ли интерфейс. ЗАМЕТКА: Соблюдайте осторожность при использовании этих методов, поскольку они могут отображать устаревшую информацию о состоянии ссылки.


23
2018-05-30 20:08



Я думаю, что это был лучший ответ - ethtool не является стандартным в моем распределении Ubuntu, поэтому он не помогает, если на ящике, не подключенном к сети. - user20010
Я считаю, что ifconfig будет иногда показывать устаревшие данные. Он может показывать UP, когда ссылка не работает, но интерфейс ethtool всегда будет показывать правильную информацию AFAIK. - sed_and_done
Я думаю, что @sed_and_done прав. На VM Red Hat, если я отключу сетевой адаптер, 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, что является тем же самым, что и при подключении сетевого адаптера. - Adi Inbar


dmesg | grep eth

вы должны увидеть все изменения статуса


15
2018-05-30 19:44



Это единственный, который работает, если у вас нет привилегий администратора. - Brian B
dmesg требует root на Slackware 14.0 - AnonymousLurker
Нет, нет. Я только что проверил - пока он работает для меня eth0 устройства, но он не eth2 устройство. - Hi-Angel


Вы также можете использовать mii-tool, чтобы узнать, поднята ли ссылка, и проверить скорость согласования.

# mii-tool
  eth0: согласованный 100baseTx-FD, ссылка ok


9
2018-05-30 19:36



mii-tool устарел и не работает для интерфейсов GbE. - Dave Cheney
@DaveCheney # mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok - stolsvik
Страница man для mii-tool предлагает использовать ethtool. Тем не менее, mii-tool продолжает выполнять свою работу, более полезен, если задан параметр -v (verbose). - David Ramirez


Вы можете получить полную информацию с помощью команды ниже

ethtool eth0

И если вы просто хотите увидеть статус ссылки, дайте команду ниже

mii-tool eth0

3
2018-03-03 07:31





Если ваша система использует ifplugd (например, на Raspberry Pi с Raspbian), вы можете использовать связанный с ним инструмент состояния ifplugstatus для получения статуса связи всех интерфейсов:

ifplugstatus

или конкретный интерфейс (например, eth0):

ifplugstatus eth0

2
2018-04-12 12:36





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


2
2018-06-10 00:12



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