python subprocess.popen进入无限循环

时间:2011-03-01 08:53:06

标签: python

我正在尝试在子进程上运行以下命令并收集输出。

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参数,则会在无限循环中打印namp的第一个错误行

有人对如何处理这个问题有什么看法吗?

1 个答案:

答案 0 :(得分:2)

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时,我的代码中没有挂起,并且它不会无限循环。