2016-04-24 17 views
0

ネットワークに接続されているすべてのデバイスのMACアドレスを取得したい。 [スクリプト内 - すべてのWindows環境]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台のデバイスが接続されていて、初めてスクリプトを実行すると、1つまたは2つのデバイスだけが返されます。私はそれがすべて5を返しますスクリプトを実行する次回は、三度目はそのように...だけであってもよい。]

私は、コマンドプロンプトを開いて行うかのように

arp -a 

これはすべて完璧に動作します時間。

私の質問は、私はpythonスクリプトでcmdから結果を解析する方法があるということですか?

私はos.popen(.. ?? ..)を見ましたが、 私はそれをどうすれば正確に理解できるのですか? これに適したライブラリはありますか? https://pypi.python.org/pypi/arprequest/0.3

答えて

2

subprocessモジュールをご覧ください。

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

check_outputのpython 2でstrオブジェクト、そしてあなたが例えばoutput.decode("ascii")に変換することができますのpython 3でbytesオブジェクトを返します:あなたは、おそらくcheck_outputメソッドを使用します。

関連する問題