【软路由】openwrt 断网自动重连拨号
实现原理定时ping两个外网IP如果连续N次都ping不通则用ifup wan重启网卡重新拨号文件及目录ping检测脚本/root/ping/ping.sh守护脚本/root/ping/daemon.sh判断ping检测脚本是否有在运行没有则启动添加到计划任务定时启动即可日志/root/ping/log.txtping检测脚本/root/ping/ping.sh其中sshpass -p xxxxx ssh -p 22 root192.168.2.10 reboot是ssh通知esxi进行软路由重启xxxxx是密码#!/bin/sh#ping 的总次数PING_SUM3#ping 的间隔时间单位秒SLEEP_SEC10#连续重启网卡 REBOOT_CNT 次网络都没有恢复正常重启软路由#时间 (SLEEP_SEC * PING_SUM 20) * REBOOT_CNTREBOOT_CNT30 LOG_PATH/root/ping/log.txtcnt0 reboot_cnt0while:doping-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]]thenechoNetwork OK!cnt0 reboot_cnt0elsecntexpr$cnt 1echo-ndate%Y-%m-%d %H:%M:%S$LOG_PATHprintf- [%d/%d] Network maybe disconnected,checking again after %d seconds!\r\n$cnt$PING_SUM$SLEEP_SEC$LOG_PATHprintf- [%d/%d] Network maybe disconnected,checking again after %d seconds!\r\n$cnt$PING_SUM$SLEEP_SECif[$cnt$PING_SUM]thenechoifup wan!!!$LOG_PATHechoifup wan!!!ifdownwansleep1ifupwan cnt0#重连后等待20秒再进行ping检测sleep20#网卡重启超过指定次数还没恢复正常重启软路由reboot_cntexpr$reboot_cnt 1if[$reboot_cnt$REBOOT_CNT]thenecho-ndate%Y-%m-%d %H:%M:%S$LOG_PATHecho- reboot!$LOG_PATHecho- reboot!sshpass -p xxxxxssh-p 22 root192.168.2.10rebootfififisleep$SLEEP_SECdone守护脚本/root/ping/daemon.sh#!/bin/shLOG_PATH/root/ping/log.txt# 用ps获取ups进程数量NUMps|grepping.sh|grep-vgrep|wc-lecho${NUM}# 少于1重启进程if[${NUM}-lt1]then/root/ping/ping.sh/dev/nullecho-ndate%Y-%m-%d %H:%M:%S$LOG_PATHecho- Ping daemon start$LOG_PATHfiexit0计划任务定时执行守护脚本编辑文件/var/spool/cron/crontabs/root在最后边添加一行*/1 * * * * /root/ping/daemon.sh意思为每分钟执行一次 daemon.sh 脚本