此脚本适用于有一个主网关和一个备用网关的服务网络架构中,自动检测网关是否正常,自动切换网关,自动报警。

#!/bin/bash

IPA=192.168.100.254        #定义网关AIP地址

IPB=172.30.8.254           #定义网关BIP地址
MAIL=admin@ssxiaoguai.com  #定义管理员邮箱

while true                 #利用死循环永久执行此脚本

do   

    ping  -c 3 $IPA &> /dev/null    #ping网关A   

    STATUS=$?   

    if [ "$STATUS" -eq 0 ];then     #如果能够通信,则等待5秒,继续执行ping网关A动作       

        sleep 5       

        continue   

    else       

        ping -c 3 $IPB &> /dev/null  #如果不能够与网关A正常通信,则ping网关B
        i=$?       

        if [ 0 -eq "$i" ];then       #如果与网关B能够正常通信,则切换到网关B           
            route del default gw $IPA           

            route add default gw $IPB           

            wall "WARNNING:${IPA} is stopped!!!"

            #向每个终端发送错误信息,及时邮件告知管理员

            echo "WARNNING:${IPA} is stopped!!!" | mail -s "WARNNING!!!!"  $MAIL     

            while true              #继续利用死循环,让脚本永久执行                                    do               

            ping -c 3 $IPA &> /dev/null  #ping网关A                                        

            b=$?              

            if [ "$b" -eq 0 ];then       #如果能够通信,则切换到网关A       

                route del default gw $IPB

                route add default gw $IPA              

                break              

            fi                           #否则等待5秒,继续ping网关A              

                sleep 5           

            done       

        else #如果网关A和网关B都不能够用,就向所有终端发送警告信息,并发送邮件通知管理员                wall "EORRO:network services is alread stopped!!!!!"

            echo "EORRO:network services is alread stopped!!!!!" | mail -s "Gateway is done"  $MAIL             fi

    fi 

done