2016-04-24 193 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")轉換爲例子。

相關問題