为每个重定向的标准输出创建一个进程

为每个重定向的标准输出创建一个进程

因此,我有一个端口扫描器 (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.

相关内容