2017-08-21 29 views
0

10秒間隔でファイルを書き込んだPythonスクリプトを使用してコマンドを実行し、それを読み込んで内容を分析したい。Python - 間隔でファイルを書き込む

スクリプトを実行するとファイルが作成されますが、コンテンツは書き込まれません。

cmd0 = 'airodump-ng -c '+ channel + ' --bssid ' + bssid + ' --write interval 10 -w psk wlan0mon' 
cmd0 = cmd0.split() 
p = Popen(cmd0,stdin=PIPE, stdout=PIPE, stderr=PIPE) 
time.sleep(10)#wait 10 seconds 
for number in range(1, 101): 
path = 'psk-01.csv' 
print('read file') 
time.sleep(10) 
p.terminate() 

しかし、同じコマンドを端末で直接実行すると、ファイルが正しく書き込まれます。

airodump-ng -c 11 --bssid macx --write-interval 10 -w psk wlan0mon 

どうすればよいですか?

+0

なぜ 'stdin'は' PIPE'ですか? (おそらく 'stdout'と' stderr'と同じ質問です)。 stdinにパイプされているデータはありません。 – Evert

+0

出力を取り出して何かをしたいですか?そうでなければ 'subprocess.call'を使うべきです。 –

+0

これを使用しないと、この場合、airodump-ngは端末インタフェースを起動し、スクリプトは停止します。 –

答えて

0

解決策が見つかりました。代わりに、次の

p = subprocess.Popen(cmd0) 

t =threading.Thread(target=myfunction,args=(values,)) 
t.start() 
t.join() 

p.terminate() 

:私は次のコードを入れ

p = Popen(cmd0,stdin=PIPE, stdout=PIPE, stderr=PIPE) 
time.sleep(10)#wait 10 seconds 
for number in range(1, 101): 
path = 'psk-01.csv' 
print('read file') 
time.sleep(10) 
p.terminate() 

をそして、それは働きます!

関連する問題