Je veux vérifier si un ethX spécifié est physiquement actif ou non. Comment faire cela avec la ligne de commande?
$ ethtool <eth?>
Par exemple:
$ ethtool eth0
fournit:
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
Vérifier /sys/class/net/eth0/operstate
et d'autres fichiers de ce répertoire.
Pour autant que je sache, cela est spécifique à Linux 2.6+, mais il fournit une interface propre au pilote du noyau.
La documentation complète de cette partie du système de fichiers sys
est disponible ici:
https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
ethtool [interface]
la dernière ligne montre ce que vous voulez:
# ethtool eth0 Paramètres pour eth0: Ports pris en charge: [TP] Modes de liaison pris en charge: 10baseT/Half 10baseT/Full 100baseT/Demi 100baseT/Full 1000baseT/Full Prend en charge la négociation automatique: Oui Modes de liaison annoncés: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Auto-négociation annoncée: Oui Vitesse: 1000Mb/s Duplex: Full Port: Paire torsadée PHYAD: 0 Émetteur-récepteur: interne Négociation automatique: on Prise en charge Wake-on: g Wake-on: d Niveau actuel du message : 0x00000037 (55) Lien détecté: oui
ip link show
en est un autre. Bon vieux
ifconfig dev_name
ou
ifconfig -a
vous indiquera également si l'interface est active. REMARQUE: Faites preuve de prudence avec ces méthodes car elles peuvent afficher des informations obsolètes concernant l'état du lien.
dmesg | grep eth
vous devriez voir tous les changements de statut
Vous pouvez également utiliser mii-tool pour voir si le lien est en place et vérifier la vitesse négociée.
# mii-tool
eth0: 100baseTx-FD négocié, lien ok
Pour ajouter rapidement à la réponse de @ goo , vous interpréteriez le ip link
ou ip link show INTERFACE
comme suit.
Il s'agit d'un port qui est administrativement en hausse, mais physiquement en panne:
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
En d'autres termes, le UP
que vous pouvez voir indique que le système est configuré pour essayer d'utiliser le NIC pour la mise en réseau. Le NO-CARRIER
ici vous indique quel est le problème empêchant la mise en réseau de fonctionner.
Il s'agit d'un port qui est administrativement arrêté (sa couche physique est "active", techniquement - c'est une machine virtuelle):
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
Enfin, ce port fonctionne normalement:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000
C'est administrativement UP
, le LOWER_UP
indique que la couche physique fonctionne (c'est-à-dire qu'il y a une porteuse), et le second UP
confirme (en effet) que la couche IP est active.
Vous pouvez avoir tous les détails avec la commande ci-dessous
ethtool eth0
Et si vous voulez simplement voir l'état du lien, la commande donner ci-dessous
mii-tool eth0
netplugd est un service qui peut exécuter des programmes lorsqu'un câble est branché ou un câble retiré. La ligne de commande serait donc grep/var/log/messages ou dmesg pour la sortie netplugd.
Si votre système utilise ifplugd
(par exemple sur un Raspberry Pi avec Raspbian), vous pouvez utiliser l'outil d'état associé ifplugstatus
pour obtenir l'état de la liaison de toutes les interfaces:
ifplugstatus
ou une interface spécifique (par exemple eth0):
ifplugstatus eth0