重启network_重启软路由的正确姿势

我的软路由总时不时的不明原因掉网,重启才能好,烦!!!要是能自动检测断网,自己重启就好了,闲来蛋疼,搞起来...

折腾的时候遇见了好多坑,特别在cronb这!

什么是软路由?能实现什么功能?请参考:

https://zhuanlan.zhihu.com/p/104639279

开始思路

Step1:写一个网络检测脚本,实时监测网络状态,如果不断网继续检测,断网则重启路由,myreboot.sh脚本如下:

#!/bin/sh

if ping -c 3 www.baidu.com  grep "bytes"
then
        date >> network.log
        echo "Network is fine, Go on checking" >> network.log
else
        date >> networkWrong.log
        echo "Network is dead, rebooting 1 minute later" >> networkWrong.log
        reboot -d 30
fi

注意:network.log如果不写成绝对地址,则自动保存到root文件夹下,myreboot.sh脚本最好也放在root文件夹下...

Step2: 再把这个脚本写在crontab中定时运行就可以了,crontab -e把定时运行的命令写进去

* * * * * sh myreboot.sh

一分钟检测一次,每次检测的结果都会写到network.log的日志文件中,不错...

21c87b8f944ed5314873e095cdd6dc8b.png

到这里似乎大功告成了,其实并没有。

如果你重启下路由,就会发现crontab中我写的定时任务没有了,但是系统自己的定时任务还完好如初。欺负人,这该如何是好!

经过各种尝试,终于认识到Openwrt并不会保存crontab中的命令,而是根据系统初始化程序填充进去的,有了这个认识就好解决了。思路:写个脚本随系统启动,这个脚本的工作就是把运行命令填充到crontab中。

Step1:写个随系统启动的脚本myorder.sh

echo "* * * * * if ping -c 1 http://www.baidu.com | grep bytes; then date>>network.log; else date >> networkWrong.log && sleep 5 && touch /etc/banner && reboot; fi" >> /etc/crontabs/root

其中,/etc/crontabs/root是crontab文件

Step2: 找到/etc/rc.local文件,把要启动的脚本放在其中

c6c602a5ab852b0b3e2ae60d86d27ecc.png

路由无论怎么重启,crontab中都会出现定时检测任务了,这次是真的大功告成了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值