GNU/Linux >> Linux Esercitazione >  >> Linux

controlla se l'interfaccia eth0 è attiva (configurata)

Puoi farlo in molti modi. Ecco un esempio:

$ cat /sys/class/net/eth0/operstate
up

ip a show ethX up

Se non viene visualizzato nulla, la tua interfaccia non funziona


ip a | grep -Eq ': eth0:.*state UP' || _do_your_thing 

Quindi qui abbiamo grep l'onnipresente ip stdout dello strumento per una riga che contiene sia la nostra interfaccia di interesse sia la frase "state UP" (grazie a @Lekensteyn per aver sottolineato la necessità di un po' più di specificità rispetto al solo UP ). Usiamo l'argomento a come forma abbreviata di address e questo dovrebbe essere sufficiente per ottenere un elenco di tutte le schede di rete configurate nel sistema.

Un vantaggio nell'usare ip potrebbe essere davvero disponibile ovunque:è così che configuro comunemente i dispositivi di rete del mio telefono Android, ad esempio.

Il :colons vengono utilizzati per evitare corrispondenze parziali - in questo modo garantiamo una corrispondenza per eth0 al contrario di un someothereth0 altrimenti possibile o eth007 .

Grazie @RaphaelAhrens per avermi spinto verso la correttezza e aver spiegato la mia soluzione.

MODIFICA:

Per gestire i requisiti attuali potresti:

ip a | sed -rn '/: '"$if"':.*state UP/{N;N;s/.*inet (\S*).*/\1/p}'

Quanto sopra stamperà un indirizzo IP CIDR solo se il tuo obiettivo è $if è SU, collegato e ne ha uno. Per ipv6 la soluzione è altrettanto semplice con solo piccole modifiche.

Se non ti piace sed potresti ottenere risultati simili con un altro |pipe ... grep e aggiungendo un -A opzione di contesto al primo grep - ma mi piace sed .


Linux
  1. Linux:perché l'interfaccia Ethernet si chiama Enp0s10 anziché Eth0?

  2. Taglia / Grep e Df -h?

  3. Grep e coda -f?

  4. Come faccio a grep in modo ricorsivo?

  5. Comando Linux per verificare se uno script di shell è in esecuzione o meno

Grep Regex:una guida completa

Come escludere in Grep

Come modificare il nome dell'interfaccia di rete in eth0 su CentOS 8 / RHEL 8

Cambia il nome di rete predefinito (ens33) in eth0 su Debian 10 / Debian 9

Collegamento da wlan0 a eth0

Controlla il numero di connessioni attive sulla porta 80?