使用Bash进行Ping测试多线程

3
我正在尝试使用ping -c1测试检查2500多台服务器的健康状况。检查单个服务器需要1.5秒。此次执行几乎需要1.5小时。我想将这个执行时间缩短到10分钟或15分钟左右,所以考虑在bash脚本中启用线程。我注意到epel提供的“parallel”增强了多线程功能。
请问有没有其他方法可以实现这一点?我更喜欢bash而不是其他语言。
谢谢。

如何创建多个服务器列表并在后台同时运行多个ping脚本。 - Lohit Gupta
2
Bash并不是您需求的最佳解决方案。如果您真的想坚持使用Bash,可以考虑使用parallelfping等工具。 - P....
请点击此处https://stackoverflow.com/a/46027261/2836621查看。 - Mark Setchell
2个回答

3

有一个名为fping的工具,它可以从输入文件中读取:

fping hosts.txt

该程序不需要多线程,因为单个进程/线程可以同时ping多个主机。
或者您可以使用老牌的nmap,它也能够并行执行ping测试。
nmap -n -sP -iL hosts.txt

0

你可能无法获得完全的加速,但你尝试过在后台运行每个进程吗?像这样:

for i in {1..100} ; 
    do     ( /cygdrive/c/Windows/System32/ping -n 3 127.0.0.1 & ); 
done

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接