2016-04-24 191 views
0

我想获取连接到网络的所有设备的mac地址。 [在脚本 - 所有窗口环境]有没有办法在python脚本中执行arp -a cmd命令?

我决定使用python。我已经使用nmap。

import nmap 
nm = nmap.PortScanner() 
nm.scan('127.0.0.1', '22-443') 
#nm.scan(hosts='192.168.1.0/24', arguments='-n -sP -PE -PA21,23,80,3389') 
nm.scan(hosts = '192.168.1.0/24', arguments = '-n -sP -PE -T5') 
for host in nm.all_hosts(): 
    mac = nm[host]['addresses']['mac'] 
    print("mac " + mac) 

[这种方法的问题是,有时它会丢失很少的设备。含义 如果有5台设备连接到路由器,并且我第一次运行脚本,它将只返回一个或两个设备。下一次我运行该脚本将返回所有5个,第三次可能只有一个......这样的。]

在哪里,如果我打开命令提示符,然后呢,

arp -a 

它完美每时间。

所以我的问题是,有没有一种方法可以解析来自cmd在python脚本中的结果?

我看着os.popen(.. ??), 但我不能明白我该怎么做? 这有没有好的图书馆? https://pypi.python.org/pypi/arprequest/0.3

回答

2

你应该看看subprocess模块。你可能想使用check_output方法:

import subprocess 
output = subprocess.check_output(("arp", "-a")) 
# Parse output here 

check_output将在Python 2返回str对象,在Python 3 bytes对象,你可以用output.decode("ascii")转换为例子。

相关问题