Получите удаленный MAC-адрес с помощью Python и Linux

Как я получаю MAC-адрес удаленного хоста на моей LAN? Я использую Python и Linux.

5
задан myk_raniu 6 January 2010 в 03:48
поделиться

4 ответа

Можно попробовать выполнить команду arp -a

Вот несколько ссылок на захват адреса Mac (не протестировано)

В Linux/Unix, арпинг,

http://www.ibm.com/developerworks/aix/library/au-pythocli/

В Windows, используя IP Helper API по типу

http://code. activestate.com/recipes/347812/

4
ответ дан 13 December 2019 в 22:09
поделиться
[

] Много лет назад мне было поручено собрать различную информацию о машинах со всех машин на корпоративном кампусе. Желаемой частью информации был MAC-адрес, который трудно получить в сети, охватывающей несколько подсетей. В то время я использовал встроенную в Windows команду "nbtstat".[

] [

]Сегодня существует утилита Unix под названием "nbtscan", которая предоставляет похожую информацию. Если вы не хотите использовать внешнюю утилиту, может быть, существуют библиотеки NetBIOS для python, с помощью которых можно собрать информацию для вас?[

].
0
ответ дан 13 December 2019 в 22:09
поделиться

вы можете использовать это на win32 или linux

import subprocess
import sys
remotehost="192.168.0.122"
cmd="arp -a"
p=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
output, errors = p.communicate()
if output is not None :
    if sys.platform in ['linux','linux2']:
        for i in output.split("\n"):
            if remotehost in i:
                for j in i.split():
                    if ":" in j:
                        print "%s--> %s" % (remotehost,j)
    elif sys.platform in ['win32']:
        item =  output.split("\n")[-2]
        if remotehost in item:
            print "%s-->  %s" %(remotehost, item.split()[1])

NB:arp записи взорвутся через некоторое время, вам нужно "залить вашу сеть", например, ping, так что arp -a показывает ваш удаленный хост.

0
ответ дан 13 December 2019 в 22:09
поделиться

ARP-записи никогда не могут быть правы, я пытался пинговать хост несколько раз, но ARP -A не даст мне адрес Mac / Ethernet. (Не беспокойтесь с кодом Windows из активного состояния BTW)

Надежный путь на Linux (и * NIX) - использовать Arping или Sakpapy (см. http://en.wikipedia.org/wiki/arping ) а затем анализ вывода. Вот код, который я использовал. Вы должны быть root или использовать Sudo, чтобы запустить Arping.

cmd = '/sbin/arping -c 1 ' + remotehost       

p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)                               
output, errors = p.communicate()                                                            
if output is not None :                                                                     
    mac_addr = re.findall(r'(\[.*\])', output)[0].replace('[', '').replace(']', '')      
2
ответ дан 13 December 2019 в 22:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: