校园网&openwrt记(十三)断网重连的循环版本
2016-03-09 11:30
3635 查看
在之前所完成的启动项版本中,断网重连是使用crontab来完成的。每分钟都会检查网络状态,虽然看似简单实用,但是有时候却会出现很严重的问题。由于使用了ping来检查网络状态,在网络状态不佳的情况下,如果不指定短的超时,那么我们所运行的检查网络脚本有可能会运行很久,又由于每分钟会执行一次这个检查脚本,在很坏的情况下,这个脚本可能会在同一时间执行多次,这是很不爽的事情。
而且,由于使用了crontab,除了rc.local处需要执行的启动脚本“connect”和发送获取权限包的lua脚本(getperm.lua),还需要这一个断网重连的脚本,逻辑是很清楚,但是其实完全可以整合到启动脚本中。
再者,一分钟检查一次,在最坏的情况下我们得等一分钟再能够重新联网,这也是需要改进的地方。
所以,使用循环检测的方法会更加实用一些。将启动脚本和断网重连的脚本整合起来,最终形成脚本connect,其逻辑如下:
1. 首先发送获取拨号权限的udp包给服务器,成功则跳到3,否则跳到2
2. 由于获取权限失败,于是进入一个循环当中,循环条件是获取权限失败,循环体做的事情是,首先判断是否能够连接到服务器,不能则重启wan以通过dhcp获取新的ip(也可以进入一个循环直到可以连接服务器为止),然后不管是否能够连接服务器都进行一次获取权限,更新获取权限的失败与否,失败则继续循环,成功则跳出循环,进入3
3. 此时已经获取权限成功,可以进行pppoe拨号了(ifup pppoe),由于拨号需要几秒时间,所以这里适当sleep几秒,等待联网成功,然后执行4
4. 此时应该已经是联网成功了,开始进行循环的网络判断,联网正常则继续循环,否则跳出循环,回到步骤1(即1、2、3、4置于一个while true之内)
这样,在rc.local中只要添加 …/connect & 这样一句命令就可以了,它将作为后台程序保证我们能够断网重连,“…”是connect脚本所在的目录。(写完这一系列文章后将会把源码放在我的github,欢迎批评指正)
而且,由于使用了crontab,除了rc.local处需要执行的启动脚本“connect”和发送获取权限包的lua脚本(getperm.lua),还需要这一个断网重连的脚本,逻辑是很清楚,但是其实完全可以整合到启动脚本中。
再者,一分钟检查一次,在最坏的情况下我们得等一分钟再能够重新联网,这也是需要改进的地方。
所以,使用循环检测的方法会更加实用一些。将启动脚本和断网重连的脚本整合起来,最终形成脚本connect,其逻辑如下:
1. 首先发送获取拨号权限的udp包给服务器,成功则跳到3,否则跳到2
2. 由于获取权限失败,于是进入一个循环当中,循环条件是获取权限失败,循环体做的事情是,首先判断是否能够连接到服务器,不能则重启wan以通过dhcp获取新的ip(也可以进入一个循环直到可以连接服务器为止),然后不管是否能够连接服务器都进行一次获取权限,更新获取权限的失败与否,失败则继续循环,成功则跳出循环,进入3
3. 此时已经获取权限成功,可以进行pppoe拨号了(ifup pppoe),由于拨号需要几秒时间,所以这里适当sleep几秒,等待联网成功,然后执行4
4. 此时应该已经是联网成功了,开始进行循环的网络判断,联网正常则继续循环,否则跳出循环,回到步骤1(即1、2、3、4置于一个while true之内)
这样,在rc.local中只要添加 …/connect & 这样一句命令就可以了,它将作为后台程序保证我们能够断网重连,“…”是connect脚本所在的目录。(写完这一系列文章后将会把源码放在我的github,欢迎批评指正)
相关文章推荐
- openwrt,wifi认证-nodogsplash
- openwrt mount usb Invalid argument
- openwrt x86下配置pppoe-server注意事项
- can't open '/etc/rc.common, openwrt 换行符导致无法自启动
- vsftpd-2.3.4移植到8621开发板
- Openwrt笔记
- Openwrt从零开始(一)
- 如何在OpenWRT的非交换网卡/单口网卡(OpenWRT x86)下配置802.1Q VLAN
- openwrt dreambox 编译出错
- openwrt关于mac都一样的问题
- 如何编译OpenWrt
- 华为 HG255D 刷openwrt trunk 支持ipv6
- openwrt 进编译之前的准备
- 如何编译OpenWrt
- OPENWRT设置之命令行下简单配置有线和无线
- OPENWRT网络打印机TCP/IP共享设置教程 以703N为例
- openwrt firmware分区
- 中山大学东校区路由上网攻略
- openwrt顶层Makefile分析