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参数,namp的第一行错误信息就会无限循环打印。
有没有人有什么建议,关于如何处理这个问题?
1 个回答
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的错误输出命令时,我的代码不会卡住,也不会无限循环。