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 wlan0
Na 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
...
ifconfig
była to dobra alternatywa na przyszłość.
Wiele dystrybucje zastępuje ifconfig
się ip
wię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 show
jest to prawdopodobnie bardziej odpowiednie niż ip addr show
.
ifconfig
już domyślnie, Raspbian Stretch wydaje się go mieć. Wolę ip
ponad ifconfig
, choć myślę, że Bob ma rację mówiąc, że link
jest to prawdopodobnie bardziej odpowiednie niż addr
w 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*/address
naiwną próbę uratowania go przed nadchodzącymi „przewidywalnymi nazwami interfejsów sieciowych”.
ifconfig wlan0
Na końcu pierwszego wiersza powinien znajdować się adres sprzętowy MAC.