Ответы:
Ниже приведен фрагмент скрипта bash, который я использую для определения MAC-адреса Ethernet или, если он не существует WiFi (для Pi Zero W).
Он не использует ifconfig
какой-либо другой метод определения выделенного IP-адреса и нуждается только в системе для обнаружения сетевого оборудования.
Это работает для Джесси, Стретч или Бастер
# 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
В основном вы можете использовать MAC=$(cat /sys/class/net/wlan0/address)
для поиска MAC встроенного WiFi на Pi3 или Pi Zero W.
MAC=$(cat /sys/class/net/wlx*/address)
должен работать с WiFi ключами на Stretch, но вы можете легко адаптировать вышеописанное для работы как с Jessie, так и с Stretch для WiFi и Ethernet.
/sys/class/net
?
Введите в терминал / консоль. ifconfig wlan0
В конце первой строки должен быть аппаратный адрес MAC или MAC.
Вот пример вывода (немецкий язык):
pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0 Link encap:Ethernet Hardware Adresse b8:27:eb:xx:xx:xx
...
ifconfig
это хорошая альтернатива в будущем.
Многие дистрибутивы заменяются ifconfig
на, ip
поэтому я бы не рекомендовал использовать ifconfig
.
Чтобы показать интерфейс wlan0:
ip link show wlan0
или
cat /sys/class/net/wlan0/address
ifconfig
все еще будет доступен в течение многих лет. Удаление этого сэкономит до 800 кБ, сломая много старых скриптов.
ip link show
вероятно, более целесообразно, чем ip addr show
.
ifconfig
по умолчанию, кажется, Raspbian Stretch его имеет. Я предпочитаю ip
более ifconfig
, хотя я думаю, что Боб прав, говоря, что link
это, вероятно, более уместно, чем addr
в этом контексте. Однако решение, к которому я пришел, заключалось в том, чтобы прочитать его /sys/class/net/wlan0/address
- никакого дополнительного анализа не требуется. Кроме того, я пишу это как cat /sys/class/net/wl*/address
наивную попытку сохранить его для будущих «предсказуемых имен сетевых интерфейсов».
ifconfig wlan0
В конце первой строки должен быть аппаратный адрес MAC или MAC.