Python并行子进程命令,同时抑制输出



我正在使用python中的ping进行简单的ip扫描。我可以并行运行命令,如本答案所示。但是,我无法抑制输出,因为它使用 Popen,并且我不能使用 check_output,因为如果主机在某个 IP 地址关闭,则进程返回的退出状态为 2,大多数地址都是这种情况。使用管道也是不可能的,因为同时运行的进程太多。

有没有办法在抑制输出的同时在 python 中同时运行这些子进程?这是我的代码供参考:

def ICMP_scan(root_ip):
host_list = []
cmds = [('ping', '-c', '1', (root_ip + str(block))) for block in range(0,256)]
try:
res = [subprocess.Popen(cmd) for cmd in cmds]
for p in res:
p.wait()
except Exception as e:
print(e)

如何将进程输出管道传输到/dev/null.

基于这个答案:

import os
devnull = open(os.devnull, 'w')
subproc = subprocess.Popen(cmd, stdout=devnull, stderr=devnull)

最新更新