一个朋友提的一个需求,有一批应用的主机需要检查网络是否正常,当然很多方法,如部署又saltstack的话直接检查minions是否在线就可以,或者可以通过python来弄个简单的脚本直接ping即可。反正方法很多,这次我打算用shell来简单实现,当然这个只是简单的demo,可以补充很多内容,比如写入log,也可以在深入一些,获取主机名,每天定时发送报告等等。主要是用来shell编程的简单练习,函数调用。

测试如下

#!/bin/sh 

function demo_ping()
{
  ping -c 1 172.16.1.${1} >/dev/null 2>&1
  if [ $? == 0 ];then
    return 0
  else 
    return 1
  fi
}

for i in `seq 1 254`;do
  demo_ping $i
    if [ $? == 0 ];then
      echo "server of 172.16.1.${i} is on line"
    else 
      echo "server of 172.16.1.${i} is offline"
    fi
done

结果

[root@dev_slliang ~]# sh ping.sh 

server of 172.16.1.1  is on line

server of 172.16.1.2 is offline

server of 172.16.1.3 is on line

server of 172.16.1.4 is on line

server of 172.16.1.5 is offline