Я хочу проверить, работает ли указанный ethX физически или нет. Как мне это сделать в командной строке?
$ 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
Проверьте /sys/class/net/eth0/operstate
и другие файлы в этом каталоге.
Насколько мне известно, это характерно для Linux 2.6+, но обеспечивает чистый интерфейс для драйвера ядра.
Полная документация по этой части sys
файловую систему можно найти здесь:
https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
ethtool [interface]
последняя строка показывает, что вы хотите:
# 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 auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: d Current message level: 0x00000037 (55) Link detected: yes
ip link show
Другой. Старый добрый
ifconfig dev_name
или
ifconfig -a
также сообщит вам, работает ли интерфейс. НОТА: Будьте осторожны с этими методами, поскольку они могут отображать устаревшую информацию о состоянии ссылки.
dmesg | grep eth
вы должны увидеть все изменения статуса
Вы также можете использовать mii-tool, чтобы проверить, работает ли ссылка, и проверить согласованную скорость.
# mii-tool
eth0: согласовано 100baseTx-FD, ссылка в порядке
Чтобы быстро добавить в @гуответ, вы бы интерпретировали 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
вы можете видеть, что система настроена на попытку использования сетевой карты для работы в сети. В 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 включен.
Вы можете получить полную информацию с помощью команды ниже
ethtool eth0
И если вы просто хотите увидеть статус ссылки, дайте команду ниже
mii-tool eth0
Если ваша система использует ifplugd
(например, на Raspberry Pi с Raspbian), вы можете использовать связанный инструмент статуса ifplugstatus
чтобы получить статус связи всех интерфейсов:
ifplugstatus
или конкретный интерфейс (например, eth0):
ifplugstatus eth0
netplugd - это служба, которая может запускать программу (ы), когда кабель подключен или кабель отключен. Таким образом, командная строка будет выглядеть как grep / var / log / messages или dmesg для вывода netplugd.