OpenWrt 断网自动重连拨号

实现原理

定时ping两个外网IP,如果连续N次都ping不通,则用 ifup wan 重启网卡重新拨号

文件及目录

ping检测脚本:/root/ping/ping.sh
守护脚本:/root/ping/daemon.sh 判断ping检测脚本是否有在运行,没有则启动,添加到计划任务定时启动即可
日志:/root/ping/log.txt

ping检测脚本

/root/ping/ping.sh
其中 sshpass -p xxxxx ssh -p 22 root@192.168.1.254 'reboot' 是ssh通知esxi进行软路由重启,xxxxx是密码

#!/bin/sh

#ping 的总次数
PING_SUM=3

#ping 的间隔时间,单位秒
SLEEP_SEC=10

#连续重启网卡 REBOOT_CNT 次网络都没有恢复正常,重启软路由
#时间= (SLEEP_SEC * PING_SUM + 20) * REBOOT_CNT
REBOOT_CNT=30

LOG_PATH="/root/ping/log.txt"

cnt=0
reboot_cnt=0
while :
do
    ping -c 1 -W 1 114.114.114.114 > /dev/null
    ret=$?

    ping -c 1 -W 1 223.6.6.6 > /dev/null
    ret2=$?

    if [[ $ret -eq 0 || $ret2 -eq 0 ]]
    then
        echo 'Network OK!'
        cnt=0
        reboot_cnt=0
    else
        cnt=`expr $cnt + 1`
        echo -n `date '+%Y-%m-%d %H:%M:%S'` >> $LOG_PATH
        printf '-> [%d/%d] Network maybe disconnected,checking again after %d seconds!\r\n' $cnt $PING_SUM $SLEEP_SEC >> $LOG_PATH
        printf '-> [%d/%d] Network maybe disconnected,checking again after %d seconds!\r\n' $cnt $PING_SUM $SLEEP_SEC 

        if [ $cnt == $PING_SUM ]
        then
            echo 'ifup wan!!!' >> $LOG_PATH
            echo 'ifup wan!!!'

            ifdown wan
            sleep 1
            ifup wan

            cnt=0
            #重连后,等待20秒再进行ping检测
            sleep 20

            #网卡重启超过指定次数还没恢复正常,重启软路由
            reboot_cnt=`expr $reboot_cnt + 1`
            if [ $reboot_cnt == $REBOOT_CNT ]
            then
                echo -n `date '+%Y-%m-%d %H:%M:%S'` >> $LOG_PATH
                echo '-> =============== reboot!' >> $LOG_PATH
                echo '-> =============== reboot!'

                sshpass -p xxxxx ssh -p 22 root@192.168.1.254 'reboot'  
            fi
        fi
    fi

    sleep $SLEEP_SEC
done

守护脚本

/root/ping/daemon.sh

#!/bin/sh

LOG_PATH="/root/ping/log.txt"

# 用ps获取ups进程数量
NUM=`ps | grep ping.sh | grep -v grep | wc -l`
echo ${NUM}

# 少于1,重启进程
if [ "${NUM}" -lt "1" ]
then
    /bin/sh /root/ping/ping.sh > /dev/null &
    echo -n `date '+%Y-%m-%d %H:%M:%S'` >> $LOG_PATH
    echo '-> Ping daemon start' >> $LOG_PATH
fi
exit 0

计划任务定时执行守护脚本

编辑文件 crontab -e 在最后边添加一行

*/1 * * * * /bin/sh /root/ping/daemon.sh
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇