2

端末コマンドのリスト( Kali Linux )を通過するプログラムを作成しました(端末で実行しました)。

import subprocess as sub
import time
sub.call(['airmon-ng', 'start', 'wlan0'])
p = sub.call(['airodump-ng','wlan0mon'])
time.sleep(10)
p.kill()

最後のコマンドはairodump-ng wlan0mon. すべて正常に動作します (すべてがターミナルに表示されます (ビーコン、essid など)。

指定した時間の後、プロセスを強制終了したい ( airodump-ng wlan0mon)。

Ctrl+を手で押したくないCp.kill()動作しません (不適切な使用の可能性があります)。

これどうやってするの?subprocess モジュールを介してどのコマンドを送信する必要がありますか?

4

1 に答える 1

0

このsubprocess.callメソッドは、終了コードを返す前にプロセスが終了するのを待機する高レベル APIです。サブプロセスの実行中にメイン プロセスの実行を継続する必要がある場合は、少し低レベルの API: を使用する必要があります。これにより、バックグラウンドでプロセスが開始されます。subprocess.Popen

p = sub.Popen(['airodump-ng','wlan0mon'])の代わりに使用するとp = sub.call(['airodump-ng','wlan0mon'])うまくいくはずです。

于 2015-10-31T14:53:55.740 に答える