Jak mogę znaleźć adres MAC mojego interfejsu Wi-Fi?

10

Chcę ustalić adres MAC mojego interfejsu Wi-Fi na Raspberry Pi ZW z Raspbian Lite.

Czy istnieje polecenie, które mogę uruchomić, aby mi to powiedzieć? Czy w /procdrzewie jest urządzenie , które je ujawni?

Bex
źródło
1
Wpisz w terminalu ifconfig wlan0Na końcu pierwszego wiersza powinien znajdować się adres sprzętowy MAC.
LotPings
2
@LotPings Możesz udzielić odpowiedzi!
joan

Odpowiedzi:

9

Poniżej znajduje się fragment skryptu bash, którego używam do określenia MAC Ethernetu lub jeśli nie istnieje WiFi (dla Pi Zero W).

Nie opiera się na ifconfigżadnej innej metodzie wykrywania przydzielonego adresu IP i potrzebuje tylko systemu do wykrycia sprzętu sieciowego.

Działa to w przypadku Jessie, Stretch lub 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

Zasadniczo można użyć MAC=$(cat /sys/class/net/wlan0/address)do znalezienia MAC wbudowanego WiFi na Pi3 lub Pi Zero W.

MAC=$(cat /sys/class/net/wlx*/address) powinien działać na kluczach WiFi na Stretch, ale możesz łatwo dostosować powyższe do pracy zarówno na Jessie, jak i Stretch dla WiFi i Ethernet.

Milliways
źródło
Bardzo dobra odpowiedź. Dziękuję Ci! Czy Raspbian Stretch używa przewidywalnych nazw interfejsów sieciowych? Czy wpływają na nazewnictwo konstrukcji /sys/class/net?
Bex
1
@Bex To zależy; nowa instalacja domyślnie używa przewidywalnych nazw interfejsów sieciowych, nie wiem o aktualizacjach. Aby przywrócić poprzednie zachowanie, wystarczy skonfigurować szczegółowe informacje, jak skonfigurować sieć / Wi-Fi / statyczny adres IP . Bez względu na nazwę wybraną przez proces wyliczania sprzętu należy wyświetlić. Istnieje kilka metod modyfikowania tego procesu.
Milliways,
10

Wpisz w terminalu / konsoli ifconfig wlan0Na końcu pierwszego wiersza powinien znajdować się adres sprzętowy MAC.

Oto przykładowe dane wyjściowe (niemieckie ustawienia regionalne):

pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  Hardware Adresse b8:27:eb:xx:xx:xx
...
LotPings
źródło
Poparłem tę odpowiedź - ale nie sądzę, aby ifconfigbyła to dobra alternatywa na przyszłość.
Bex
1
Uzgodnione, na szczęście istnieją dwie alternatywy.
LotPings
7

Wiele dystrybucje zastępuje ifconfigsię ipwięc chciałbym zniechęcać do używania ifconfig.

Aby wyświetlić interfejs wlan0:

ip link show wlan0

lub

cat /sys/class/net/wlan0/address

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

MatsK
źródło
Jestem prawie pewien, ifconfigże nadal będzie dostępny przez wiele lat. Usunięcie go uratuje marne 800 kB, niszcząc wiele starych skryptów.
Dmitrij Grigoriew
Problem polega na tym, że ta osoba chciałaby pensji.
Dmitrij Grigoriew
1
Smutne jest dalsze używanie przestarzałego polecenia w nowych implementacjach. Widziałem to w sytuacjach związanych z pracą, i to jest jak przesuwanie problemu przed sobą, aw pewnym momencie stanie się zbyt duże! Zamiast tego zacznij sobie z tym radzić!
MatsK,
2
W tym przypadku ip link showjest to prawdopodobnie bardziej odpowiednie niż ip addr show.
Bob
1
W moim systemie stacjonarnym uruchamiam Debian Stretch, który wydaje się, że nie ma ifconfigjuż domyślnie, Raspbian Stretch wydaje się go mieć. Wolę ipponad ifconfig, choć myślę, że Bob ma rację mówiąc, że linkjest to prawdopodobnie bardziej odpowiednie niż addrw tym kontekście. Rozwiązaniem, które wybrałem, było jednak odczytanie go /sys/class/net/wlan0/address- nie jest konieczne dodatkowe analizowanie. Dodatkowo piszę to jak cat /sys/class/net/wl*/addressnaiwną próbę uratowania go przed nadchodzącymi „przewidywalnymi nazwami interfejsów sieciowych”.
Bex