it-swarm.com.de

Wie überprüfe ich den physischen Status eines Ethernet-Ports unter Linux?

Ich möchte überprüfen, ob ein bestimmtes ethX physisch hoch oder runter ist. Wie mache ich das mit der Kommandozeile?

67
Jader Dias

$ ethtool <eth?>

Zum Beispiel:

$ ethtool eth0

bietet:

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

Prüfen /sys/class/net/eth0/operstate und andere Dateien in diesem Verzeichnis.

Soweit ich weiß, ist dies spezifisch für Linux 2.6+, bietet jedoch eine saubere Schnittstelle zum Kerneltreiber.

Die vollständige Dokumentation zu diesem Teil des Dateisystems sys finden Sie hier:

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

48
Linuxtraveler

ethtool [interface]

die letzte Zeile zeigt, was Sie wollen:

 # ethtool eth0 
 Einstellungen für eth0: 
 Unterstützte Ports: [TP] 
 Unterstützte Verbindungsmodi: 10baseT/Half 10baseT/Full 
 100baseT/Half 100baseT/Full 
 1000baseT/Full 
 Unterstützt die automatische Aushandlung: Ja 
 Angekündigte Link-Modi: 10baseT/Half 10baseT/Full 
 100baseT/Half 100baseT/Full 
 1000baseT/Full 
 Angekündigte automatische Aushandlung: Ja 
 Geschwindigkeit: 1000Mb/s 
 Duplex: Voll 
 Port: Twisted Pair 
 PHYAD: 0 
 Transceiver: intern 
 Automatische Aushandlung: Ein 
 Unterstützt Wake-On: g 
 Wake-On: d 
 Aktuelle Nachrichtenebene : 0x00000037 (55) 
 Link erkannt: ja 
34
Kurt
ip link show

ist ein anderer. Gute alte

ifconfig dev_name

oder

ifconfig -a

wird Ihnen auch sagen, ob die Schnittstelle aktiv ist. HINWEIS : Seien Sie bei diesen Methoden vorsichtig, da sie veraltete Informationen zum Status des Links anzeigen können.

25
goo
dmesg | grep eth

sie sollten alle statuschanges sehen

16
lepole

Sie können auch mii-tool verwenden, um festzustellen, ob der Link aktiv ist, und die ausgehandelte Geschwindigkeit überprüfen.

# mii-tool
Eth0: 100baseTx-FD ausgehandelt, Link ok

9
Alakdae

Um die Antwort von @ goo schnell zu ergänzen, würden Sie das ip link oder ip link show INTERFACE wie folgt.

Dies ist ein Port, der administrativ aktiv, aber physisch nicht verfügbar ist:

2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

Mit anderen Worten, das UP, das Sie sehen können, zeigt an, dass das System so konfiguriert ist, dass es versucht, das NIC für die Vernetzung) zu verwenden. Das NO-CARRIER Hier erfahren Sie, welches Problem das Funktionieren des Netzwerks verhindert.

Dies ist ein Port, der administrativ inaktiv ist (seine physische Schicht ist technisch gesehen "up" - es ist eine VM):

3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

Schließlich funktioniert dieser Port normal:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP mode DEFAULT group default qlen 1000

Es ist administrativ UP, das LOWER_UP zeigt an, dass die physikalische Schicht arbeitet (d. h. es gibt einen Träger), und die zweite UP bestätigt (tatsächlich), dass die IP-Schicht aktiv ist.

4

Sie können alle Details mit dem folgenden Befehl haben

ethtool eth0

Und wenn Sie nur den Linkstatus sehen möchten, geben Sie den folgenden Befehl ein

mii-tool eth0
3
Nikunj Ranpura

netplugd ist ein Dienst, der Programme ausführen kann, wenn ein Kabel eingesteckt oder ein Kabel herausgenommen wird. Die Befehlszeile wäre also grep/var/log/messages oder dmesg für die Ausgabe von netplugd.

2
rjt

Wenn Ihr System ifplugd verwendet (z. B. auf einem Raspberry Pi mit Raspbian), können Sie das zugehörige Status-Tool ifplugstatus verwenden, um den Verbindungsstatus aller Schnittstellen abzurufen:

ifplugstatus

oder eine spezifische Schnittstelle (z. B. eth0):

ifplugstatus eth0
2
Pierz