In Ubuntu ifconfig -a
erhalte ich mit dem Befehl alle Informationen zu meinen Ethernet- / WLAN-Schnittstellen.
Aber ich muss als Ausgabe nur die MAC-Adresse erhalten, wie:
ab:cd:ef:12:34:56
57:89:12:34:ac:23
12:34:56:ab:cd:ef
Wie kann ich das bekommen?
command-line
networking
simone_s1994
quelle
quelle
LANG=C ifconfig -a
stattifconfig -a
für nicht-englische Installationen verwenden, kann Probleme mit grep geben. (dh in meinem SystemHWaddr
istdirecciónHW
)ifconfig -a | grep -i hw-*
?-*
soll das was heißen?HW
aber er gab anHWaddr
und spanisch wie ich denke / sehedirecciónHW
so kann es einfachHW
sein;)grep
"ist sehr experimentell". Wenn Sie grundlegende Regex verwenden möchten, der entsprechende Befehl istifconfig -a | grep -o 'HWaddr [[:xdigit:]:]*'
oder, wenn Sie es vorziehen,ifconfig -a | grep -o 'HWaddr [a-f0-9:]*'
. Ich habe das Trailing weggelassen,$
weil die Ausgabe Leerzeichen nach der MAC-Adresse enthält, und wahrscheinlich möchten Sie diese nicht.Sie können
address
für jedes Gerät im/sys
virtuellen Dateisystem auf die Datei zugreifen . Die MAC-Adresse sollte lauten/sys/class/net/<device-name>/address
:Für alle Geräte:
quelle
ip
hat auch schon seit Jahren.Hier sind einige Möglichkeiten:
grep
. Es gibt verschiedene reguläre Ausdrücke, die diese aufgreifen. Hier suche ich nach 5 Wiederholungen von 2 Buchstaben oder Zahlen, gefolgt von einem Doppelpunkt und zwei beliebigen Zeichen. Das-i
macht das Spiel Groß- und Kleinschreibung und die-o
Markengrep
drucken nur die angepaßten Teils.-E
aktiviert erweiterte reguläre Ausdrücke. Der gleiche reguläre Ausdruck funktioniert auch mit PCREs (-P
).sed
. Das-n
unterdrückt die normale Ausgabe und-r
aktiviert erweiterte reguläre Ausdrücke. Mit demselben regulären Ausdruck wie oben versucht dieses Skript, alles in der Zeile durch den Teil zu ersetzen, der mit dem regulären Ausdruck übereinstimmt. Wenn die Ersetzung erfolgreich war, wird die resultierende Zeile gedruckt (aufgrund derp
am Ende der Ersetzung).awk
. Wenn die Zeile mit einem Wortzeichen ([a-zA-Z0-9_]
) beginnt und 5 Felder enthält, drucken Sie das letzte aus.Perl, wo es wie immer mehr als eine Möglichkeit gibt. Dies ist die gleiche Logik wie
awk
oben. Das-a
weist Perl an, jede Eingabezeile in das@F
Array aufzuteilen .Alternativ können Sie den regulären Ausdruck aus den vorherigen Ansätzen verwenden:
Coreutils.
quelle
Wie einige kommentiert haben,
ifconfig
wird zugunsten desip
Befehls veraltet . Wenn ich also die verschiedenen Lösungen und Kommentare kombiniere, würde ich Folgendes verwenden:quelle
ifconfig -a | grep HWaddr | awk '{print $5}'
Wenn Ihre Systemausgabe in diesem Befehl nicht Englisch ist, ist es sinnvoll, sie auf diese Weise auszuführen.
LANG=C ifconfig -a | grep HWaddr | awk '{print $5}'
Dies gilt für alle Lösungen.
quelle
grep
separat zu verwenden, können Sieawk
direkt nachifconfig -a | awk '/HWaddr/ { print $5 }'
LANG=C ifconfig -a
stattifconfig -a
für nicht-englische Installationen verwenden, kann Probleme mit grep geben. (dh in meinem SystemHWaddr
istdirecciónHW
)@Helio
am Anfang des Kommentars. Wenn nicht, werde ich nicht benachrichtigt.