通过ping命令检测主机的存活性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过ping命令检测主机的存活性相关的知识,希望对你有一定的参考价值。


判断所有的业务系统中主机的存活性ping


问题描述:现在有一上线项目,用的环境为vsphere 虚拟化技术。由于不能随时判断各虚拟主机的存活性,保证业务系统的正常运行,现在需要编写一个脚本判断主机的存活性,将返回值与第三方短信平台进行对接


思路分析:


1、明确目的判断主机的存活性,可用ping 命令 ping各个虚拟机的IP进行判断


2、整个业务系统有多个虚拟IP,可用shell脚本中的for 循环


3、每隔一段时间执行循环一次,可用while循环 ,条件永远为真,时间间隔可用sleep


4、每个IP都ping 一定的次数,可在for循环中嵌套while循环


5、返回失败和成功的次数


6、最后进行判断,失败多少次,为异常


脚本编写

1.定义一个文件,用于存放业务系统中所有的IP


  vim  address

192.168.31.6

192.168.31.7

……


2.编写脚本


vim jcp.sh 


#!/bin/bash

while true

DATE=$(date "+%Y-%m-%d %H:%M:%S")

do


   for address in $(cat $1)

        do

        echo -en "ping $address……"

          i=1

          Pingtimes=10

          Result=5

          SuccessTimes=0

          FailureTimes=0

               while (($i <= $Pingtimes))

               do

               ping -c 5 -i 0.5 -t 5 $address > /dev/null 2>&1

                 if [ "$?" -eq "0" ];

                      then

                      SuccessTimes=$(($SuccessTimes+1))

                      echo "OK" && echo "$DATE  $address is up " >> address.txt

                else

                      FailureTimes=$(($FailureTimes+1))

                      echo "Failed" && echo "$DATE $address is down " >> address.txt

                fi

                i=$(($i+1))

                done

           echo "successtimes is $SuccessTimes"


           echo "failuretimes is $FailureTimes"


                if [ $FailureTimes -ge $Result ];

                    then

                    echo "$address is down"

                else

                    echo "$address is up"

                fi

        done

sleep 10s;

done


3.执行查看结果


  chmod +x jcp.sh


  ./jcp.sh address


 


本文出自 “92868888” 博客,转载请与作者联系!

以上是关于通过ping命令检测主机的存活性的主要内容,如果未能解决你的问题,请参考以下文章

通过Ping判断监控主机的存活

Linux ping命令详解

linux上的ping命令是啥

主机存活检测局域网主机存活检测端口检测

linux里面ping -c 2 ip命令作用是啥?

通过curl以及ping命令批量测试主机连通性