Linux ping&x2B;如何尽可能缩短ping命令的时间
我想创建一个bash脚本,它将通过ping IP的列表进行验证 问题是ping到任何地址都需要几秒钟(如果没有ping应答),尽管我将ping定义为:Linux ping&x2B;如何尽可能缩短ping命令的时间,linux,bash,solaris,ping,Linux,Bash,Solaris,Ping,我想创建一个bash脚本,它将通过ping IP的列表进行验证 问题是ping到任何地址都需要几秒钟(如果没有ping应答),尽管我将ping定义为: Ping –c 1 126.78.6.23 上面的示例只执行ping一次–但问题是时间,等待几秒钟直到ping结束(如果没有答案) 在我的情况下,这是至关重要的,因为我需要检查150多个IP(通常90%以上的IP不活动) 所以要检查150个IP,我需要500秒以上的时间 如果有一些关于如何快速执行ping的好主意,请提供建议 备注我的脚本需
Ping –c 1 126.78.6.23
上面的示例只执行ping一次–但问题是时间,等待几秒钟直到ping结束(如果没有答案)
在我的情况下,这是至关重要的,因为我需要检查150多个IP(通常90%以上的IP不活动)
所以要检查150个IP,我需要500秒以上的时间
如果有一些关于如何快速执行ping的好主意,请提供建议
- 备注我的脚本需要在两个操作系统(linux和solaris)上运行
- 最好的办法是并行运行ping
然后将结果保存到文件中。
在这种情况下,脚本的运行时间不会超过一秒钟
for ip in `< list`
do
( ping -c1 $ip || echo ip >> not-reachable ) &
done
(这里,57是分组的大小,1是要发送的分组的数目)
Solaris中Ping的语法:
/usr/sbin/ping -s [-l | -U] [-adlLnrRv] [-A addr_family]
[-c traffic_class] [-g gateway [ -g gateway...]]
[-F flow_label] [-I interval] [-i interface] [-P tos]
[-p port] [-t ttl] host [data_size] [npackets]
您可以创建一个聚合两种方法的函数:
myping()
{
[ `uname` = Linux ] && ping -c 1 "$i" || ping "$ip" 57 1
}
for ip in `< list`
do
( myping $ip || echo ip >> not-reachable ) &
done
您可以使用,它是可编写脚本的(在Tcl中)。现在Solaris附带了
coreutils
OOTB吗?然后,您可以使用timeout
指定上限:
timeout 0.2s ping -c 1 www.doesnot.exist >/dev/null 2>&1
如前所述,一种简单的方法是克服时间问题,并行运行ping命令 您已经有了Linux(iputils)ping的语法 对于Solaris,发送单个ping的正确选项是
ping -s 126.78.6.23 64 1
安装将提供一个更强大的替代方案。这已经在SU-enter上得到了回答,在Bartlomiej提供的链接中,有answer@BartlomiejLewandowski,我不确定这是问对了问题。我有点怀疑他在寻找一种并行处理的方法,一种低响应时间的方法。我可能会尝试使用
nmap-sP
并启用一些选项来启用并行处理。nmap
也是我会采用的方法。为什么要重新发明轮子,而其他东西可以帮你完成这项工作呢?对于solaris来说,c1不是valid@Eytan:在perl命令中,$host
变量中有一个ip
timeout 0.2s ping -c 1 www.doesnot.exist >/dev/null 2>&1
ping -s 126.78.6.23 64 1