繁体   English   中英

有没有办法在python脚本中执行arp -a cmd命令?

[英]Is there a way to execute arp -a cmd command in python script?

我想获得连接到网络的所有设备的mac地址。 [在脚本中 - 所有Windows环境]

我决定使用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

它每次都很完美。

所以我的问题是,有没有办法可以解析python脚本中cmd的结果?

我查看了os.popen(.. ?? ..),但我无法理解我该怎么做? 这有什么好的图书馆吗? https://pypi.python.org/pypi/arprequest/0.3

您应该看一下子进程模块。 您可能想要使用check_output方法:

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

check_output将返回python 2中的str对象,以及python 3中的一个bytes对象,您可以使用output.decode("ascii")进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM