未分类 · 2023年6月17日 0

OpenWRT网络连接自动检测脚本

最近出现两次移动宽带断网事件。路由器WAN线路正常,状态也是已经拨号,甚至也正常有了大内网的IP地址。但是,就是不能上网。这显然是运营商的问题,其他邻居也反映会出现断网问题,重启光猫就能恢复。

我改了桥接,所以这就方便了我在路由器上处理问题,不用去重启光猫。因为挂着服务,就不想打开定时重连重启了。设置个定时任务,断网时再重连WAN连接。

首先SSH登录进路由器。上传或者新建脚本文件。我放在/root/chkwan.sh了。

#!/bin/sh

d_runtime=`date +"%Y-%m-%d %H:%M:%S"`
PING1=`ping -c 3 baidu.com|grep -v grep|grep '64 bytes' |wc -l`
if [ ${PING1} -ne 0 ];then
    #echo "OKDATE: "$d_runtime >> /root/chkwan.log
    exit 0
else
    /sbin/ifup wan
    #ifdown wan;sleep 3;ifup wan
    sleep 15
    PING2=`ping -c 3 baidu.com|grep -v grep|grep '64 bytes' |wc -l`
    if [ ${PING2} -ne 0 ];then
        echo "REWAN: "$d_runtime >> /root/chkwan.log
        exit 0
    else
        echo "RENET: "$d_runtime >> /root/chkwan.log
        /etc/init.d/network restart
        #reboot
    fi
fi

内容大概就是PING指定网址,如果失败就重连WAN,休息10秒再看,如果还不行就重启路由器。

之后在路由器WEB界面找到【系统】-【计划任务】,点【添加】。

勾上【开启】,随便填个【任务名称】,然后中间的不用理,直接勾上下面的【自定义】。在【自定义cron参数】填上任务就行,我这个是每十分钟运行一次脚本。

*/10 * * * * /root/chkwan.sh

注意事项:运行间隔不要太短,如果间隔太短,又不能正常上网,那么会让你来不及进路由器后台。自用脚本,不打算优化。