GNU/Linux >> Tutoriels Linux >  >> Linux

vérifier si l'interface eth0 est active (configurée)

Vous pouvez le faire de plusieurs façons. Voici un exemple :

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

ip a show ethX up

Si rien ne s'affiche, votre interface est en panne


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

Alors nous voilà grep l'omniprésent ip stdout de l'outil pour une ligne qui contient à la fois notre interface d'intérêt et la phrase "state UP" (merci à @Lekensteyn d'avoir souligné la nécessité d'un peu plus de spécificité que juste UP ). Nous utilisons l'argument a comme forme courte pour address et cela devrait être suffisant pour obtenir une liste de toutes les cartes réseau configurées dans le système.

Un avantage à utiliser ip il se peut qu'il soit vraiment disponible partout - c'est ainsi que je configure couramment les périphériques réseau de mon téléphone Android, par exemple.

Le :colons sont utilisés pour éviter les correspondances partielles - de cette manière, nous garantissons une correspondance pour eth0 par opposition à un someothereth0 autrement possible ou eth007 .

Merci @RaphaelAhrens de m'avoir poussé vers l'exactitude et d'avoir expliqué ma solution.

MODIFIER :

Pour gérer les exigences actuelles, vous pouvez :

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

Ce qui précède n'imprimera une adresse IP CIDR que si votre cible $if est UP, branché, et en a un. Pour ipv6, la solution est tout aussi simple avec seulement des modifications mineures.

Si vous n'aimez pas sed vous pourriez obtenir des résultats similaires avec un autre |pipe ... grep et en ajoutant un -A option de contexte au premier grep - mais j'aime sed .


Linux
  1. Linux - Pourquoi l'interface Ethernet s'appelle-t-elle Enp0s10 au lieu d'Eth0 ?

  2. Couper / Grep Et Df -h ?

  3. Grep et queue -f ?

  4. Comment puis-je grep récursivement?

  5. Commande Linux pour vérifier si un script shell est en cours d'exécution ou non

Grep Regex :un guide complet

Comment exclure dans Grep

Comment changer le nom de l'interface réseau en eth0 sur CentOS 8 / RHEL 8

Remplacez le nom de réseau par défaut (ens33) par eth0 sur Debian 10 / Debian 9

Passer de wlan0 à eth0

Vérifiez le nombre de connexions actives sur le port 80 ?