如何理解“ping -c 1 $IP > /dev/null”

今天遇到这样一个问题,设计一个脚本,监控远程的一台机器(假设ip为123.23.11.21)的存活状态,当发现宕机时发一封邮件给你自己。

首先想到用户ping命令来探测远程机是否存活,但是如何知道呢,于是查了各大网页资料了解到这样一个程序:

#!/bin/bash
# blog:http://lizhenliang.blog.51cto.com
  
IP_LIST= "192.168.18.1 192.168.1.1 192.168.18.2"
for  IP  in  $IP_LIST;  do
     NUM=1
     while  [ $NUM - le  3 ];  do
        if ping -c 1 $IP > /dev/nullthen
            echo "$IP Ping is successful."
            break
        else
            # echo "$IP Ping is failure $NUM"
             FAIL_COUNT[$NUM]=$IP
             let  NUM++
         fi
     done
     if  [ ${ #FAIL_COUNT[*]} -eq 3 ];then
         echo  "${FAIL_COUNT[1]} Ping is failure!"
         unset  FAIL_COUNT[*]
     fi
done
好吧,作为一个菜鸟无法理解标红部分,不过单条执行后发现如下情况:
[root@localhost ~]# if ping -c 1 192.168.247.130 >/dev/null;then echo "sucessful"; break; else echo "loss"; fi
loss
[root@localhost ~]# if ping -c 1 192.168.247.131 >/dev/null;then echo "sucessful"; break; else echo "loss"; fi
sucessful

原来是被“ping -c 1 192.168.247.130 >/dev/null”摒弃标准输出所迷惑,任务既然摒弃了怎么能判断,但看整个if语句才发现,这个位置的if...else语句相当于$?,于是明白了。你呢?




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值