2012-08-24 54 views
0

我有一個方便打扮的shell腳本,它循環顯示IP地址列表並回顯出丟包率(下)。將條件子句添加到簡單的ping腳本

如果百分比不等於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 

回答

1

我假設$7是百分比(這是$6對我來說)。只需在awk腳本中添加額外條件即可。

awk -v host=$myHost '/packet loss/ && $7!="0%" {print host, $7}' 
0

如果你只是要檢查的主機列表,如果每個主機是活着還是沒有,那麼我建議使用ping都爲此而拋棄並用fping,這是更好地編寫腳本比普通ping和解決了在一襯墊此問題:

grep這裏被用來
$ 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% 

調用(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%' 
相關問題