85 votes

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 inactif. Comment puis-je faire cela avec la ligne de commande ?

87voto

$ 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

59voto

Drew Points 4332

Vérifiez /sys/class/net/eth0/operstate et d'autres fichiers dans ce répertoire.

Pour autant que je sache, cela est spécifique à Linux 2.6+, mais cela fournit une interface propre au pilote du noyau.

La documentation complète pour cette partie du sys peut être trouvée ici :

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

12 votes

/

0 votes

G

37voto

Fake Jim Points 399

ethtool [interface]

La dernière ligne montre ce que vous voulez :

\# 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

29voto

Pontus Points 730
ip link show

est un autre. Le bon vieux

ifconfig dev_name

ou

ifconfig -a

vous indiquera également si l'interface est en service. NOTE : Faites attention avec ces méthodes car elles peuvent montrer des informations périmées concernant l'état du lien.

0 votes

Je pense que c'était la meilleure réponse - ethtool n'est pas standard dans ma distribution Ubuntu, donc il n'est d'aucune aide s'il est sur une boîte non connectée au réseau.

4 votes

Je crois que ifconfig affiche parfois des données périmées. Il peut afficher UP alors que le lien est en panne, mais ethtool interface affichera toujours les bonnes informations AFAIK.

2 votes

Je pense que @sed_and_done a raison. Sur une VM Red Hat, si je déconnecte le NIC, ethtool affiche immédiatement Link detected: no au lieu de Link detected: yes y ip link show spectacles <NO-CARRIER,BROADCAST,MULTICAST,UP> au lieu de <BROADCAST,MULTICAST,UP,LOWER_UP> mais ifconfig -a spectacles UP BROADCAST MULTICAST MTU:1500 Metric:1 ce qui est la même chose que lorsque le NIC est connecté.

19voto

lepole Points 1723
dmesg | grep eth

vous devriez voir tous les changements d'état

0 votes

C'est la seule qui fonctionne si l'on n'a pas les privilèges d'administrateur.

0 votes

Dmesg nécessite d'être root sur Slackware 14.0

0 votes

Non, ce n'est pas le cas. Je viens de vérifier - bien que cela fonctionne pour moi sur eth0 mais pas sur l'appareil eth2 dispositif.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X