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


Je veux vérifier si un ethX spécifié est physiquement à la hausse ou à la baisse. Comment puis-je faire cela avec la ligne de commande?


60
2018-05-30 19:20


origine




Réponses:


$ 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

61
2018-05-30 19:21





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

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

Documentation complète pour cette partie de la sys système de fichiers peut être trouvé ici:

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


42
2018-01-20 09:19



/ sys / class / net / eth0 / carrier était la réponse parfaite à cette question pour moi. - Per Knytt
Très bonne réponse. Un petit addendum: / run / network / ifstate contient également des informations utiles. - Paulo André Haacke


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 / complet
                                1000baseT / complet
        Prend en charge la négociation automatique: oui
        Modes de liaison annoncés: 10baseT / Demi 10baseT / Full
                                100baseT / demi 100baseT / complet
                                1000baseT / complet
        Auto-négociation annoncée: oui
        Vitesse: 1000Mb / s
        Duplex: complet
        Port: paire torsadée
        PHYAD: 0
        Émetteur-récepteur: interne
        Négociation automatique: sur
        Prise en charge du réveil: g
        Réveil: d
        Niveau de message actuel: 0x00000037 (55)
        Lien détecté: oui

33
2018-05-30 19:28



Si vous vérifiez ceci: en.wikipedia.org/wiki/OSI_model . Vous verrez que la dernière ligne concerne une autre couche: la couche de liaison. Je viens de tester cela. Avec un mauvais câble, la couche physique était en place, mais pas la couche liaison. Ensuite, je suis passé à un autre câble et toutes les couches sont apparues. - Jader Dias


ip link show

est un autre. Bon vieux

ifconfig dev_name

ou

ifconfig -a

vous dira également si l'interface est en place. REMARQUE: Soyez prudent avec ces méthodes car elles peuvent afficher des informations obsolètes concernant l'état du lien.


23
2018-05-30 20:08



Je pense que c'était la meilleure réponse - ethtool n'est pas standard dans ma distribution Ubuntu, donc cela n'aide pas si vous êtes sur une boîte non connectée au réseau. - user20010
Je crois que ifconfig affichera parfois des données obsolètes. Il peut afficher UP lorsque le lien est hors service, mais l'interface ethtool affiche toujours les informations appropriées autant que je sache. - sed_and_done
Je pense que @sed_and_done a raison. Sur une machine virtuelle Red Hat, si je déconnecte la carte réseau, ethtool affiche immédiatement Link detected: no au lieu de Link detected: yes, et show lien ip 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, qui est le même que lorsque la carte réseau est connectée. - Adi Inbar


dmesg | grep eth

vous devriez voir tous les changements de statut


15
2018-05-30 19:44



C'est le seul qui fonctionne si on manque de privilèges d'administrateur. - Brian B
dmesg requiert root sur Slackware 14.0 - AnonymousLurker
Non, ça ne va pas. Je viens de vérifier - alors que cela fonctionne pour moi eth0 appareil, mais pas sur eth2 dispositif. - Hi-Angel


Vous pouvez également utiliser mii-tool pour voir si le lien est actif et vérifier la vitesse négociée.

# mii-tool
  eth0: 100baseTx-FD négocié, lien ok


9
2018-05-30 19:36



mii-tool est obsolète et ne fonctionne pas pour les interfaces GbE. - Dave Cheney
@ Dave Cheney # mii-tool eth0: negotiated 1000baseT-FD flow-control, link ok - stolsvik
La page de manuel relative à mii-tool suggère d'utiliser ethtool. Cependant, mii-tool continue à faire son travail, plus utile si l’option -v (verbose) est donnée. - David Ramirez


Vous pouvez avoir tous les détails avec la commande ci-dessous

ethtool eth0

Et si vous voulez juste voir l’état du lien, donnez la commande ci-dessous

mii-tool eth0

3
2018-03-03 07:31





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
2018-04-12 12:36





netplugd est un service qui peut exécuter un ou plusieurs programmes lorsqu'un câble est branché ou un câble débranché. Donc, la ligne de commande serait grep / var / log / messages ou dmesg pour la sortie netplugd.


2
2018-06-10 00:12



Eh bien, pas exactement la réponse demandée, mais intéressante à connaître. Au moins pour moi. - Sopalajo de Arrierez