腳本文件如下:
#!/bin/bash #Author:Mr.Ding #Created Time:2018-08-26 07:23:44 #Name:ping.sh #Description: shibai="/root/scripts/shell/ping_shibai.txt" yanchigao="/root/scripts/shell/yanchigao.txt" . /etc/init.d/functions for i in `cat IP_list` do ping=`ping -c 1 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'` Avg="$i 平均延遲(ms):`ping $i -c 3 |grep avg | gawk -F / '{print $5}'`" num=`ping $i -c 3 |grep avg | gawk -F / '{print $5}'|gawk -F . '{print $1}'` if [ $ping -eq 100 ];then action " ping $i faild" /bin/false >>$shibai echo "$Avg" else action " ping $i ok" /bin/true echo "$Avg" if [ $num -ge 1 ];then echo "$i延遲為:$num(ms)" >>$yanchigao fi fi done cat $shibai cat $yancigao rm -f $shibai rm -f $yanchigao
腳本文件說明:
. /etc/init.d/functions for i in `cat IP_list` #這個是逐個讀取allip文件里的ip; do #對讀出來的ip ping一次,看是否ping通。並取出loss的百分比的值 也就是掉包的值 ,看是否掉包 ping=`ping -c 1 $i|grep loss|awk '{print $6}'|awk -F "%" '{print $1}'` #每個IP ping3次並獲取每個IP的平均延遲,如果IP不通,則獲取不到延遲,為空; Avg="$i 平均延遲(ms):`ping $i -c 3 |grep avg | gawk -F / '{print $5}'`" #每個IP ping3次並獲取每個IP的平均延遲,取整數,如果IP不通,則獲取不到延遲,為空; num=`ping $i -c 3 |grep avg | gawk -F / '{print $5}'|gawk -F . '{print $1}'` #比較一下,看掉包的值是不是100,如果是100就是全部掉包,那就是沒ping通,那就顯示 ping ip faild,如果不等於100的話,就ping通了,就顯示 Ping ip OK if [ $ping -eq 100 ];then action " ping $i faild" /bin/false >>$shibai echo "$Avg" else action " ping $i ok" /bin/true echo "$Avg" #如果ping的延遲大於或等於100ms,就寫入到$yanchigao文件中; if [ $num -ge 100 ];then echo "$i延遲為:$num(ms)" >>$yanchigao fi fi done cat $shibai cat $yancigao rm -f $shibai rm -f $yanchigao