2015-06-15 3 views
0

Мне нужно найти MAC-адрес сетевой интерфейсной карты, которому назначен маршрут по умолчанию на python. с Python. Пока я пытался решение:Получите MAC-адрес сетевого адаптера, который имеет маршрут по умолчанию

process = os.popen('wmic nic get MACAddress') 
result = process.read() 
process.close() 
print result.split(" \r\n")[1:-1][0] 

или:

from uuid import getnode as get_mac 
':'.join(("%012X" % mac)[i:i+2] for i in range(0, 12, 2)) 

Это работает, когда я только 1 LAN, но когда у меня есть некоторые WMWare адаптер с некоторым MAC, когда-нибудь я получаю, что MAC.

Как получить MAC-адрес маршрута по умолчанию?

+0

в системе с несколькими физическими интер лица, который является «реальным» адресом? – larsks

+0

Компьютер не имеет MAC-адрес, сетевая карта имеет MAC-адрес. Вы всегда рискуете иметь больше одного. Вы хотите, чтобы MAC-адрес сетевой карты был маршрутом по умолчанию? Пожалуйста, объясните лучше, какой вы хотите. – firelynx

+0

@firelynx yes, MAC-адрес сетевой карты, которая является маршрутом по умолчанию. – VladutZzZ

ответ

0

Как @fyrelinx заявил, что нет «РЕАЛ» MAC адрес, но вы можете получить интерфейс с маршрутом по умолчанию с помощью командной строки операционной системы с помощью sub process модуля, следующая команда работает на OSX:

>>> subprocess.call(["route", "-n", "get", "default"]) 
    route to: default 
destination: default 
     mask: default 
    gateway: 192.168.0.1 
    interface: **en1** 
     flags: <UP,GATEWAY,DONE,STATIC,PRCLONING> 
recvpipe sendpipe ssthresh rtt,msec rttvar hopcount  mtu  expire 
     0   0   0   0   0   0  1500   0 

Тогда вы можете получить MAC-адрес этого конкретного интерфейса («en1» в моем случае) с использованием netifaces on pypi, как показано на this discussion:

import netifaces as nif 


netifaces.ifaddresses('en1') 
try: 
    if_mac = addrs[nif.AF_LINK][0]['addr'] 
except IndexError, KeyError: 
    pass 
+0

netifaces, это библиотека сторонних разработчиков? – firelynx

+0

это, я добавил ссылку pypi для получения дополнительной информации – gerosalesc

 Смежные вопросы

  • Нет связанных вопросов^_^