我正在尝试在子进程上运行以下命令并收集输出。
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的第一个错误行
有人对如何处理这个问题有什么看法吗?
答案 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时,我的代码中没有挂起,并且它不会无限循环。