it-swarm.xyz

Как проверить физическое состояние порта Ethernet в Linux?

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

67
Jader Dias

$ 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
70
Brooks

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

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

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

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

48
Linuxtraveler

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 
 Приемопередатчик: внутренний 
 Автосогласование: включено 
 Поддерживает включение: g 
 Включение: d 
 Текущий уровень сообщения : 0x00000037 (55) 
 Обнаружена ссылка: да 
34
Kurt
ip link show

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

ifconfig dev_name

или

ifconfig -a

также скажет вам, если интерфейс работает. ПРИМЕЧАНИЕ: Будьте осторожны с этими методами, поскольку они могут показывать устаревшую информацию о состоянии ссылки.

25
goo
dmesg | grep eth

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

16
lepole

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

# mii-tool
eth0: договорная 100baseTx-FD, ссылка в порядке

9
Alakdae

Чтобы быстро добавить ответ @ 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 здесь рассказывается, в чем проблема, препятствующая работе сети.

Это порт, который административно недоступен (его физический уровень "вверх", технически - это виртуальная машина):

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 работает.

4
iwaseatenbyagrue

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

ethtool eth0

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

mii-tool eth0
3
Nikunj Ranpura

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

2
rjt

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

ifplugstatus

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

ifplugstatus eth0
2
Pierz