Найдите MAC-адрес моего компьютера с помощью python

Используя функцию, которую я нашел на форуме / ветке (перечисленной ниже), я могу найти MAC-адрес своего компьютера в python. Однако эта функция возвращает неверный MAC-адрес. Этот компьютер имеет адаптер Ethernet и беспроводной локальной сети. Компьютер, который я использую, использует адаптер беспроводной локальной сети. Как узнать, какой MAC-адрес использует компьютер и каков физический адрес (MAC) этого адаптера?

Это код, который я нашел, который возвращает неверный MAC:

def get_mac():
    import uuid
    return str(':'.join(['{:02x}'.format((uuid.getnode() >> i) & 0xff) for i in range(0,8*6,8)][::-1])).upper()

Если нужна дополнительная информация, пожалуйста, оставьте комментарий, и я добавлю то, что могу.

Благодарю вас!


person ndurvasula    schedule 23.02.2014    source источник


Ответы (2)


Если вы используете Linux, вы можете найти список адаптеров здесь: /sys/class/net/

И прочитайте MAC-адрес определенного интерфейса, например eth0, вот так:

with open('/sys/class/net/eth0/address') as f:
    mac = f.read()
person govorox    schedule 25.09.2015
comment
Работает не для каждой системы, некоторые не имеют sys виртуальной файловой системы. - person jevgenij; 29.08.2020

from uuid import getnode as get_mac
mac = get_mac()

Примечание. Пожалуйста, обратите внимание, может ли он возвращать октет или десятичное число, и вы видите шестнадцатеричный вывод ifconfig

person PersianGulf    schedule 23.02.2014
comment
Прямо сейчас я использую точно такую ​​же вещь. Код, который я использую, использует uuid.getnode() и добавляет двоеточие через каждые 2 символа. - person ndurvasula; 23.02.2014
comment
Проверяли ли вы октет или десятичное число? Также проверьте все интерфейсы, используйте ifconfig -a - person PersianGulf; 23.02.2014
comment
Я использую Windows. ipconfig /all показывает мне мой MAC-адрес. Но как мне использовать это в питоне - person ndurvasula; 23.02.2014
comment
››› импорт ОС ››› os.system(ipconfig /all) - person PersianGulf; 24.02.2014
comment
Как мне выполнить поиск, чтобы найти мой MAC? Должен ли я использовать регулярное выражение? - person ndurvasula; 24.02.2014
comment
кроме регулярного выражения, у вас нет никакого решения, но если я предпочитаю использовать предыдущее решение, а не вызывать другое приложение. - person PersianGulf; 24.02.2014
comment
MAC какого сетевого интерфейса он предоставляет? Значение, которое я получаю от этого, не соответствует ни одному из реально существующих в моей системе. - person jevgenij; 29.08.2020