Standardmäßig ifconfig
werden mir alle verfügbaren Schnittstellen angezeigt , aber was ist, wenn ich nur eine anzeigen möchte active
? Wie, en0
nur unten.
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 14:10:9f:e0:eb:c9
inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4
inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255
nd6 options=1<PERFORMNUD>
media: autoselect
**status: active**
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 32:00:14:e7:4f:80
media: autoselect <full-duplex>
**status: inactive**
Kündigung ifconfig en0
wird nicht befriedigen, en0
ist nicht immer die aktive;)
Ich verwende Mac OS X.
command-line
networking
osx
interface
qweruiop
quelle
quelle
ifconfig
Implementierungen unterschiedlich sind. Warum ist die Verwendung auchifconfig
erforderlich? Was ist dein Endziel?Antworten:
Um eine vollständige Beschreibung aller aktiven Dienste zu erhalten, versuchen Sie Folgendes:
Dieser einfache reguläre Ausdruck sollte nur aktive Schnittstellen und alle ihre Informationen herausfiltern. Ich schlage vor, Sie haben einen Alias dafür in Ihre Datei ~ / .profile oder ~ / .bash_profile eingefügt (möglicherweise inaktiv?)
Um nur den Schnittstellennamen zu erhalten (nützlich für Skripte), verwenden Sie:
Sie müssen pcregrep installieren, damit dies funktioniert. Es ist auf Macports im pcre-Paket. Alternativ kann diese sollte mit GNU arbeitet grep
grep -Pzo
statt ,pcregrep -M -o
aber mit dem Rest des gleiche, aber ich nicht getestet haben.quelle
Wenn Sie den „Eintrag“ nur dann drucken möchten, wenn er enthält
status: active
, können Sie so etwas wie dieses awk- Programm als Filter für die ifconfig- Ausgabe verwenden:Wenn jeder „Eintrag“ beginnt (eine Zeile ist leer oder beginnt nicht mit einem Tabulator), speichern Sie den Eintrag in einem Puffer. Fügen Sie an diesen Puffer alle nachfolgenden Zeilen an, die mit einem Tabulator beginnen. Achten Sie auf die magische Schnur
status: active
; Wenn eine solche Zeile angezeigt wurde, drucken Sie den Puffer (den vorherigen "Eintrag") aus, wenn ein neuer "Eintrag" beginnt (oder die Eingabe endet).Speichern Sie den obigen Programmtext in einer Datei und verwenden Sie ihn wie folgt:
Oder, wenn Sie
chmod +x
die Datei, dann können Sie es ein bisschen vereinfachen:quelle
Wenn Sie mit Bash-Skripten nichts zu tun haben, können Sie Folgendes tun:
Hier werden die aktiven Netzwerkschnittstellen aufgelistet. Getestet unter Mac OS X 10.13.
Das Schöne ist, dass Sie nichts installieren müssen. Führen Sie einfach die oben genannten in einem Terminal.
quelle
ifconfig -lu
wird jedoch unter Debian nicht funktionieren. Da OP jedoch ohnehin MacOS verwendet, funktioniert diese Lösung auch auf Systemen mit BSDifconfig
. Ich gab eine andere Antwort , unter dem macht das gleiche , ohneifconfig -lu
Wenn Sie Ihre Kommentare und Fragen lesen, möchten Sie anscheinend nur die Schnittstellen abrufen, denen eine IP-Adresse zugewiesen wurde.
Mit
ifconfig
und geht das schnellgrep
.Befehl ausführen:
Sollte etwas ähnliches produzieren wie:
Dies würde jede Zeile mit einem Schnittstellennamen und einer IP anzeigen, wenn sie eine hatten.
Mit etwas spezifischerer REGEX-Magie erhalten Sie möglicherweise genau das, was Sie benötigen.
quelle
active
Gegenleistung?Ich wünschte, die Frage wäre etwas klarer. Angenommen
Active interface only
, Sie wollten mit nur den Namen der aktiven Schnittstellen (in meinem FallUP
und in meinemRUNNING
Statusactive
) ohne weitere Details anzeigen. Dann versuchen Sie folgendes:Die Ausgabe würde folgendermaßen aussehen:
Passen Sie das
grep -v
Feld an und fügen Sie bei Bedarf weitere unerwünschte Schnittstellen wieloopback
->lo
etc hinzu.Wenn Sie möchten, müssen Sie jetzt prüfen, ob die gefundenen Schnittstellen derzeit aktiv sind. Dann können wir sie einfach als Argument für
ifconfig <interface>
Folgendes übergeben:[[ $(ifconfig en0 | grep -w active) ]] && echo "en0 is active"
Dies weiter vereinfachen und in eine Funktion umsetzen:
Wenn Sie diese Funktion ausführen, werden nur die aktiven Schnittstellen zurückgegeben. In meinem Fall:
quelle
Das Folgende druckt nur die Schnittstellen aus, die für eine IP konfiguriert sind
quelle
Erhalten Sie nur die MAC-Schnittstelle ACTIVE:
quelle
ip
standardmäßig nicht hat ; Dazu benötigen Sie HomeBrew. Führen Sie das Programm dannbrew install iproute2mac
einmal aus. Der Quellcode ist bei github.com/brona/iproute2macWie es funktioniert:
quelle
Dies zeigt den Status der Ethernet-Verbindung en0 an
quelle