sviluppo-web-qa.it

Come verificare lo stato fisico di una porta Ethernet in Linux?

Voglio verificare se un determinato ethX è fisicamente su o giù. Come posso farlo con la riga di comando?

67
Jader Dias

$ ethtool <eth?>

Per esempio:

$ ethtool eth0

fornisce:

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

Dai un'occhiata /sys/class/net/eth0/operstate e altri file in questa directory.

Per quanto ne so questo è specifico per Linux 2.6+, ma fornisce un'interfaccia pulita per il driver del kernel.

La documentazione completa per questa parte del file system sys è disponibile qui:

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

48
Linuxtraveler

ethtool [interface]

l'ultima riga mostra quello che vuoi:

 # ethtool eth0 
 Impostazioni per eth0: 
 Porte supportate: [TP] 
 Modalità di collegamento supportate: 10baseT/Half 10baseT/Full 
 100baseT/Half 100baseT/Full 
 1000baseT/Full 
 Supporta la negoziazione automatica: Sì 
 Modalità link pubblicizzate: 10baseT/Half 10baseT/Full 
 100baseT/Half 100baseT/Full 
 1000baseT/Full 
 Auto-negoziazione pubblicizzata: Sì 
 Velocità: 1000Mb/s 
 Duplex: Full 
 Porta: Twisted Pair 
 PHYAD: 0 
 Ricetrasmettitore: interno 
 Negoziazione automatica: su 
 Supporta Wake-on: g 
 Wake-on: d 
 Livello messaggio corrente : 0x00000037 (55) 
 Collegamento rilevato: sì 
34
Kurt
ip link show

è un altro. Buon vecchio

ifconfig dev_name

o

ifconfig -a

ti dirà anche se l'interfaccia è attiva. NOTA: Usare cautela con questi metodi poiché possono mostrare informazioni non aggiornate sullo stato del collegamento.

25
goo
dmesg | grep eth

dovresti vedere tutti gli statuschanges

16
lepole

Puoi anche usare mii-tool per vedere se il collegamento è attivo e controllare la velocità negoziata.

# mii-tool
eth0: negoziato 100baseTx-FD, link ok

9
Alakdae

Per aggiungere rapidamente alla risposta di @ goo , interpreterai ip link o ip link show INTERFACE come segue.

Questa è una porta che è amministrativamente attiva, ma fisicamente inattiva:

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

In altre parole, il UP che puoi vedere indica che il sistema è configurato per provare a usare NIC per il networking. Il NO-CARRIER qui ti dice qual è il problema che impedisce il funzionamento della rete.

Questa è una porta che è amministrativamente inattiva (il suo livello fisico è "attivo", tecnicamente - è una macchina virtuale):

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

Infine, questa porta funziona normalmente:

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

È amministrativamente UP, il LOWER_UP indica che il livello fisico funziona (ovvero esiste un vettore) e il secondo UP conferma (in effetti) che il livello IP è attivo.

4

Puoi avere tutti i dettagli con il comando seguente

ethtool eth0

E se vuoi solo vedere lo stato del link, dai il comando di seguito

mii-tool eth0
3
Nikunj Ranpura

netplugd è un servizio in grado di eseguire i programmi quando viene collegato un cavo o rimosso un cavo. Quindi la riga di comando sarebbe grep/var/log/messages o dmesg per l'output di netplugd.

2
rjt

Se il tuo sistema utilizza ifplugd (ad es. Su un Raspberry Pi con Raspbian), puoi utilizzare lo strumento di stato associato ifplugstatus per ottenere lo stato del collegamento di tutte le interfacce:

ifplugstatus

o un'interfaccia specifica (ad es. eth0):

ifplugstatus eth0
2
Pierz