Ich muss mit einem Skript prüfen, ob eth0
konfiguriert ist. Wenn ja, wird das Skript nichts tun. Sonst geht es los wlan0
. (Ich möchte nicht beide eth0
und wlan0
gleichzeitig wach sein).
Was wäre der einfachste Weg, um zu überprüfen, ob eth0
bereits up ist?
Ich benutze Debian Wheezy
KLÄRUNG:
Ich möchte nicht nur überprüfen, ob das Kabel eth0
eingesteckt ist, sondern auch, ob die Schnittstelle konfiguriert ist (dh ob eine statische IP eingestellt ist oder eine DHCP-IP empfangen wurde). Wenn das Kabel eingesteckt, aber eth0
nicht richtig konfiguriert ist, möchte ich anfangenwlan0
linux
networking
user1968963
quelle
quelle
cat /sys/class/net/ | grep eth0
sollte Ihnen einfach analysierbare Daten geben. Sie könnten auch tunsudo ethtool eth0 | grep Link
Antworten:
Sie können es auf viele Arten tun. Hier ein Beispiel:
quelle
/sys/class/net/eth0/carrier
, um nach einem Signal zuWenn nichts angezeigt wird, ist Ihre Benutzeroberfläche ausgefallen
quelle
Hier ist also
grep
das allgegenwärtigeip
Werkzeugstdout
für eine Zeile, die sowohl unsere interessierende Schnittstelle als auch den Ausdruck "state UP" enthält (danke an @Lekensteyn, der darauf hingewiesen hat, dass ein wenig mehr Spezifität als nur erforderlich istUP
). Wir verwenden das Argumenta
als Kurzform füraddress
und das sollte ausreichen, um eine Auflistung aller konfigurierten Netzwerkkarten im System zu erhalten.Ein Vorteil der Verwendung
ip
könnte sein, dass sie wirklich überall verfügbar sein sollte - so konfiguriere ich zum Beispiel die Netzwerkgeräte meines Android-Telefons.Sie
:colons
werden verwendet, um partielle Übereinstimmungen zu vermeiden - auf diese Weise garantieren wir eine Übereinstimmung füreth0
im Gegensatz zu einem anderen möglichensomeothereth0
odereth007
.Vielen Dank an @RaphaelAhrens, der mich zur Korrektheit gedrängt und meine Lösung erklärt hat.
BEARBEITEN:
Um den aktuellen Anforderungen gerecht zu werden, können Sie:
Die oben wird nur eine CIDR IP - Adresse drucken , wenn Ihr Ziel
$if
ist hoch, eingesteckt und hat einen. Für ipv6 ist die Lösung mit nur geringfügigen Änderungen genauso einfach.Wenn Sie nicht mögen
sed
, könnten Sie ähnliche Ergebnisse mit einem anderen erzielen|pipe ... grep
und-A
dem ersten eine Kontextoption hinzufügengrep
- aber ich magsed
.quelle
UP
wenn das Gerät ist, aber kein Kabel angeschlossen ist :2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
. Sie können auch das Gerät angeben , Fehlalarme zu vermeiden:ip addr show dev eth0
.Die anderen Methoden funktionieren nicht, aber diese (zumindest unter Ubuntu):
quelle
ip route
auf Debian Stretch grepen kann .