2011-03-01 49 views
1

私は、サブプロセスでfolowingコマンドを実行して、出力を収集しようとしています。python subprocess.popen無限ループに入る

nmap -n -PN -sT -T4 -p 445,139 10.11.1.0/24 --exclude matrix 

このコマンドは、私が問題とするエラーを返します。私はこのようなのpythonからこれをやっているとき

問題がある:

import subprocess 
nmap_process = subprocess.Popen(command, stdout=subprocess.PIPE,stderr=subprocess.PIPE)   
output,errOutput=nmap_process.communicate() 

プロセスがハングアップします。
stderr paramを使用しない場合、nampの最初のエラー行は無限ループで表示されます

これをどのように処理するかについて誰かが分かりますか?

答えて

1
import subprocess 
cmd = "nmap -n -PN -sT -T4 -p 445,139 10.11.1.0/24 --exclude matrix" 
pro = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.PIPE) 
pro.communicate() #[0] is stdout [1] is stderr :P 

self.nmap_process.communicate()が問題のようです。これをクラスの中に作成していますか?もっとコードを見ることができますか?同じコードでnmap stderr cmdを実行しても、私のコードでハングアップすることはなく、無限ループではありません。

+0

よろしくお願いします。 –

+0

ありがとうございましたが問題は残っていますが、これは上記の私の投稿のタイプミスで、私が書いた同じコードを使用して問題を解決しています。 – jojo

+0

下の投票で申し訳ありませんが、これはタイプミスの問題ではありませんでした。 – jojo

関連する問題