Как я могу найти MAC-адрес моего интерфейса Wi-Fi?

10

Я хочу определить MAC-адрес моего Wi-Fi-интерфейса на Raspberry Pi ZW с Raspbian Lite.

Есть ли команда, которую я могу запустить, чтобы сказать мне это? Есть ли в /procдереве устройство, которое его раскроет?

Бекс
источник
1
Введите в терминале ifconfig wlan0В конце первой строки должен быть аппаратный адрес MAC или MAC.
LotPings
2
@LotPings Вы можете сделать это ответ!
Joan

Ответы:

9

Ниже приведен фрагмент скрипта 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.

Milliways
источник
Очень хороший ответ Спасибо! Использует ли Raspbian Stretch предсказуемые имена сетевых интерфейсов? Они влияют на наименование структуры под /sys/class/net?
Бекс
1
@Bex Это зависит; новая установка использует предсказуемые имена сетевых интерфейсов по умолчанию, я не знаю об обновлениях. Восстановить прежнее поведение несложно, подробнее см. Как настроить сеть / WiFi / Статический IP . Какое бы имя не было выбрано в процессе перечисления оборудования, оно должно быть показано. Есть несколько методов модификации этого процесса.
Милливэйс
10

Введите в терминал / консоль. ifconfig wlan0В конце первой строки должен быть аппаратный адрес MAC или MAC.

Вот пример вывода (немецкий язык):

pi@RasPi0w-1:~ $ ifconfig wlan0
wlan0     Link encap:Ethernet  Hardware Adresse b8:27:eb:xx:xx:xx
...
LotPings
источник
Я проголосовал за этот ответ - но я не думаю, что ifconfigэто хорошая альтернатива в будущем.
Бекс
1
Согласитесь, к счастью, есть две альтернативы.
LotPings
7

Многие дистрибутивы заменяются ifconfigна, ipпоэтому я бы не рекомендовал использовать ifconfig.

Чтобы показать интерфейс wlan0:

ip link show wlan0

или

cat /sys/class/net/wlan0/address

Ссылка: https://www.linux.com/learn/replacing-ifconfig-ip

MatsK
источник
Я уверен, что ifconfigвсе еще будет доступен в течение многих лет. Удаление этого сэкономит до 800 кБ, сломая много старых скриптов.
Дмитрий Григорьев
Проблема в том, что этот человек хотел бы зарплату.
Дмитрий Григорьев
1
Продолжать использовать устаревшую команду в новых реализациях печально. Я видел это в ситуациях, связанных с работой, и это все равно, что выдвигать проблему перед вами, и в какой-то момент она станет масштабной! Начните иметь дело с этим вместо этого!
MatsK
2
В этом случае, ip link showвероятно, более целесообразно, чем ip addr show.
Боб
1
В моей настольной системе я запускаю Debian Stretch, который, по-видимому, больше не имеет ifconfigпо умолчанию, кажется, Raspbian Stretch его имеет. Я предпочитаю ipболее ifconfig, хотя я думаю, что Боб прав, говоря, что linkэто, вероятно, более уместно, чем addrв этом контексте. Однако решение, к которому я пришел, заключалось в том, чтобы прочитать его /sys/class/net/wlan0/address- никакого дополнительного анализа не требуется. Кроме того, я пишу это как cat /sys/class/net/wl*/addressнаивную попытку сохранить его для будущих «предсказуемых имен сетевых интерфейсов».
Бекс