Wie finde ich die MAC-Adresse meiner Wi-Fi-Schnittstelle?

10

Ich möchte die MAC-Adresse meiner Wi-Fi-Schnittstelle auf einem Raspberry Pi ZW ermitteln, auf dem Raspbian Lite ausgeführt wird.

Gibt es einen Befehl, den ich ausführen kann, um mir dies zu sagen? Gibt es ein Gerät im /procBaum, das es offenbart?

Bex
quelle
1
In Terminal eingeben ifconfig wlan0Am Ende der ersten Zeile sollte die Hardwareadresse alias MAC stehen.
LotPings
2
@ LotPings Du könntest das zu einer Antwort machen!
Joan

Antworten:

9

Das Folgende ist ein Fragment eines Bash-Skripts, das ich verwende, um den MAC von Ethernet zu bestimmen, oder wenn dies von WiFi nicht existiert (für Pi Zero W).

Es basiert nicht auf ifconfigeiner anderen Methode zum Erkennen der zugewiesenen IP-Adresse und benötigt lediglich das System, um die Netzwerkhardware zu erkennen.

Dies funktioniert für Jessie, Stretch oder Buster

# Find MAC of eth0, or if not exist wlan0
if [ -e /sys/class/net/eth0 ]; then
    MAC=$(cat /sys/class/net/eth0/address)
elif [ -e /sys/class/net/enx* ]; then
    MAC=$(cat /sys/class/net/enx*/address)
else
    MAC=$(cat /sys/class/net/wlan0/address)
fi

Grundsätzlich können Sie MAC=$(cat /sys/class/net/wlan0/address)den MAC von integriertem WLAN auf Pi3 oder Pi Zero W finden.

MAC=$(cat /sys/class/net/wlx*/address) sollte auf WiFi-Dongles auf Stretch funktionieren, aber Sie können die oben genannten problemlos anpassen, um sowohl auf Jessie als auch auf Stretch für WiFi und Ethernet zu arbeiten.

Milliways
quelle
Sehr gute Antwort. Vielen Dank! Verwendet Raspbian Stretch vorhersehbare Netzwerkschnittstellennamen? Beeinflussen sie die Benennung der Struktur unter /sys/class/net?
Bex
1
@Bex Es kommt darauf an; Bei einer Neuinstallation werden standardmäßig vorhersehbare Netzwerkschnittstellennamen verwendet. Ich weiß nichts über Upgrades. Es ist einfach, das frühere Verhalten wiederherzustellen. Weitere Informationen finden Sie unter Einrichten von Netzwerk- / WLAN- / statischen IP- Adressen. Welcher Name auch immer durch den Hardware-Aufzählungsprozess ausgewählt wird, sollte angezeigt werden. Es gibt verschiedene Methoden, um diesen Prozess zu ändern.
Milliways
10

In Terminal / Konsole eingeben ifconfig wlan0Am Ende der ersten Zeile sollte die Hardwareadresse oder MAC stehen.

Hier eine Beispielausgabe (deutsches Gebietsschema):

pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  Hardware Adresse b8:27:eb:xx:xx:xx
...
LotPings
quelle
Ich habe diese Antwort positiv bewertet - aber ich denke nicht, dass dies ifconfigeine gute Alternative für die Zukunft ist.
Bex
1
Einverstanden, zum Glück gibt es zwei Alternativen.
LotPings
7

Viele Distributionen ersetzt ifconfigmit , ipdamit ich die Verwendung entmutigen würde ifconfig.

So zeigen Sie die wlan0-Schnittstelle an:

ip link show wlan0

oder

cat /sys/class/net/wlan0/address

Ref: https://www.linux.com/learn/replacing-ifconfig-ip

MatsK
quelle
Ich bin mir ziemlich sicher, dass ifconfiges noch viele Jahre verfügbar sein wird. Durch das Entfernen werden nur knapp 800 KB eingespart, wodurch viele alte Skripte beschädigt werden.
Dmitry Grigoryev
Das Problem ist, dass diese Person ein Gehalt haben möchte.
Dmitry Grigoryev
1
Es ist traurig, in neuen Implementierungen weiterhin einen veralteten Befehl zu verwenden. Ich habe dies in arbeitsbezogenen Situationen gesehen, und es ist, als würde man das Problem vor sich her schieben, und zu einem bestimmten Zeitpunkt wird es zu groß! Fangen Sie stattdessen an, damit umzugehen!
MatsK
2
In diesem Fall ip link showist wahrscheinlich besser geeignet als ip addr show.
Bob
1
Auf meinem Desktop-System führe ich Debian Stretch aus, das ifconfigstandardmäßig nicht mehr zu haben scheint, Raspbian Stretch scheint es zu haben. Ich ziehe es ipvor ifconfig, obwohl ich denke, dass Bob zu Recht sagt, dass dies linkwahrscheinlich angemessener ist als addrin diesem Zusammenhang. Die Lösung, für die ich mich entschieden habe, bestand darin, sie zu lesen /sys/class/net/wlan0/address- es ist keine zusätzliche Analyse erforderlich. Außerdem schreibe ich es wie cat /sys/class/net/wl*/addressin einem naiven Versuch, es für die kommenden "vorhersehbaren Netzwerkschnittstellennamen" zu speichern.
Bex