例4
需求:判断远程主机的存活状态
#!/bin/bash
RES=`ping -c 4 10.191.132.49 | grep "packet loss" | awk -F' |%' '{print $6}'`
if [ -z "$RES" ] #if [ -z $RES] 判断$RES是否为空,如果为空那说明我们过滤的脚本有问题需检查
then
echo "检测机器的脚本$0有问题,获取的结果为空"
exit
else
n=`echo $RES | sed 's/[0-9]//g'` #如果$RES为纯数字,那么$n为空
if [ -n "$n" ] #if [ -n $n ] #判断一个数字是否不为空,因为我们获取的一定是一个0-100的纯数字,也需检查。
then
echo "检测机器的脚本$0有问题,获取的结果$n不是纯数字"
exit
fi
fi
while :
do
if [ $RES -ge 50 ]
then
echo "机器丢包率为$RES%,较严重,请检查!"
fi
sleep 60
done
知识点:
判断远程主机存活需要运用ping命令
ping -c 4 #表示ping远程主机的次数
grep和awk都是为了过滤出丢包率的数字
awk -F ’ |%’ #-F指定分隔符,上述指定了空格和%同时为分隔符,上面的过滤也可写成:awk -F’%’ ‘{print $1}’ |awk ‘{print $NF}’ $NF表示最后一个字段。
while循环+sleep 60在这里的作用是每隔一分钟再次检查,一直循环,也可指定检查的次数,只需在while加循环的次数即可。