GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Prüfen Sie, ob die Schnittstelle eth0 aktiv ist (konfiguriert)

Sie können es auf viele Arten tun. Hier ein Beispiel:

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

ip a show ethX up

Wenn nichts angezeigt wird, ist Ihre Schnittstelle ausgefallen


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

Hier also grep das allgegenwärtige ip stdout des Tools für eine Zeile, die sowohl unsere interessierende Schnittstelle als auch den Ausdruck "state UP" enthält (Dank an @Lekensteyn für den Hinweis auf die Notwendigkeit von etwas mehr Spezifität als nur UP ). Wir verwenden das Argument a als Kurzform für address und das sollte ausreichen, um eine Liste aller konfigurierten Netzwerkkarten im System zu erhalten.

Ein Vorteil bei der Verwendung von ip könnte sein, dass es wirklich überall verfügbar sein sollte - so konfiguriere ich beispielsweise normalerweise die Netzwerkgeräte meines Android-Telefons.

Die :colons werden verwendet, um Teilübereinstimmungen zu vermeiden - auf diese Weise garantieren wir eine Übereinstimmung für eth0 im Gegensatz zu einem ansonsten möglichen someothereth0 oder eth007 .

Danke @RaphaelAhrens, dass du mich zur Korrektheit gebracht und meine Lösung erklärt hast.

BEARBEITEN:

Um die aktuellen Anforderungen zu bewältigen, könnten Sie:

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

Oben wird nur dann eine CIDR-IP-Adresse gedruckt, wenn Ihr Ziel $if ist ist UP, angeschlossen und hat einen. Für IPv6 ist die Lösung mit nur geringfügigen Änderungen genauso einfach.

Wenn Sie sed nicht mögen Sie könnten ähnliche Ergebnisse mit einem anderen |pipe ... grep erzielen und Hinzufügen eines -A Kontextoption zum ersten grep - aber ich mag sed .


Linux
  1. Grep -v Unerwartetes Verhalten?

  2. Wie grep ich rekursiv?

  3. wie man cURL auf einer bestimmten Schnittstelle verwendet

  4. Konfigurieren Sie einen DNS-Server per NIC-Schnittstelle (eth0 / eth1)?

  5. Warum heißt meine Ethernet-Schnittstelle enp0s10 statt eth0?

Grep Regex:Ein vollständiger Leitfaden

So schließen Sie in Grep aus

So ändern Sie den Namen der Netzwerkschnittstelle in eth0 unter CentOS 8 / RHEL 8

Ändern Sie den Standardnetzwerknamen (ens33) in eth0 unter Debian 10 / Debian 9

Verwenden von grep vs. awk

Überprüfen Sie die Anzahl der aktiven Verbindungen auf Port 80?