![为每个重定向的标准输出创建一个进程](https://linux22.com/image/105026/%E4%B8%BA%E6%AF%8F%E4%B8%AA%E9%87%8D%E5%AE%9A%E5%90%91%E7%9A%84%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B.png)
因此,我有一个端口扫描器 (masscan),我想将其输出重定向到某个命令行,该命令行将检查每个生成的 IP:端口组合是否服务于某个 Web 服务。
所以,它可以这样:
masscan 0.0.0.0/0 -p8080 --max-rate 300000 | ./scanner.py
但对于巨大的 IP 范围来说,这会很慢,因为scanner.py
要逐一处理。
我怎样才能并行地做到这一点?即,单独重定向每个 IP,并创建并行处理重定向到它们的 stdin 的进程,从而使扫描速度更快。
答案1
我想你可以用 做点什么xargs
。例如以下内容:
masscan 0.0.0.0/0 -p8080 --max-rate 300000 | \
xargs -L1 -I+ -P200 sh -c "echo '+' | ./scanner.py"
这将运行多达 200 个并行程序./scanner.py
,每个并行程序处理来自masscan
.