Odpowiedzi:
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.
/sys/class/net?
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
...
ifconfigbyła to dobra alternatywa na przyszłość.
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
ifconfigże nadal będzie dostępny przez wiele lat. Usunięcie go uratuje marne 800 kB, niszcząc wiele starych skryptów.
ip link showjest to prawdopodobnie bardziej odpowiednie niż ip addr show.
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”.
ifconfig wlan0Na końcu pierwszego wiersza powinien znajdować się adres sprzętowy MAC.