web-dev-qa-db-fra.com

Comment vérifier l'état physique d'un port Ethernet sous Linux?

Je veux vérifier si un ethX spécifié est physiquement actif ou non. Comment faire cela avec la ligne de commande?

67
Jader Dias

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

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

48
Linuxtraveler

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 
34
Kurt
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.

25
goo
dmesg | grep eth

vous devriez voir tous les changements de statut

16
lepole

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

9
Alakdae

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.

4
iwaseatenbyagrue

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
3
Nikunj Ranpura

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.

2
rjt

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
2
Pierz