我有一个方便的花花公子shell脚本,它遍历一个IP地址列表,并回显丢包的百分比(下图)。
如果百分比不等于0.0%,我喜欢编织if / then语句以仅回显结果。
您的建议最受赞赏!
#!/bin/bash
HOSTS="192.168.99.24 192.168.99.23"
COUNT=10
SIZE=1400
for myHost in $HOSTS
do
ping -q -n -s $SIZE -c $COUNT $myHost | awk -v host=$myHost '/packet loss/ {print host, $7}'
done
答案 0 :(得分:1)
我假设$7
是百分比(对我来说是$6
)。只需在awk
脚本中添加一个额外条件。
awk -v host=$myHost '/packet loss/ && $7!="0%" {print host, $7}'
答案 1 :(得分:0)
如果您只是想检查一个主机列表,如果每个主机都处于活动状态,那么为了这个目的,我建议完全放弃使用ping
并使用fping
,这是< em>很多比普通ping
更好的脚本,并且可以解决这个问题:
$ fping -q -c $COUNT -b $SIZE $HOSTS | grep ': xmt' | grep -v '%loss = .*/0%'
192.168.1.2 : xmt/rcv/%loss = 12/0/100%
192.168.1.3 : xmt/rcv/%loss = 12/0/100%
192.168.1.4 : xmt/rcv/%loss = 12/0/100%
此处grep
的调用仅用于(1)grep仅用于生成的行,(2)删除0%丢失的不需要的行,如下所示:
192.168.1.1 : xmt/rcv/%loss = 12/12/0%, min/avg/max = 1.08/1.11/1.19
fping
可以很好地扩展到数百万台主机,并可用于ping文件中的主机列表:
fping -q -c $COUNT -b $SIZE -f <host-list.txt | grep ': xmt' | grep -v '%loss = .*/0%'