校园网&openwrt记(十四) init服务方法
来源:互联网 发布:淘宝没有解除手机绑定 编辑:程序博客网 时间:2024/06/05 05:59
为了使应用有系统服务的样子,在使用了rc.local大法一段时间后,我决定将整个应用弄成系统服务的样子——将它放入/etc/init.d中,让系统将它作为系统服务,在指定的优先级下在开机的时候自动启动,在关机之前自动关闭。
当时,我正好学习了python语言,这个语言在openwrt中也有了良好的支持,我使用python语言将整个应用完善了一遍。这里需要啰嗦几句的是,不仅是三大运营商的pppoe拨号需要靠某拨号软件(该软件Windows才能使用),就连我们学校的校园网也需要靠那个软件登录校园网才能使用,为了功能的完整性,在前人对各udp包的研究的基础上,我将获取pppoe拨号权限和登录校园网的功能整合到了一起,用python完成了这个应用,跨平台也得到了保证。如此一来,路由器不仅可以拨三大运营商的宽带,也可以拨校园网了。
完成了应用之后,要想做成系统服务,首先需要在/etc/init.d中写一个服务脚本,应用名假设为cnclient:
#!/bin/sh /etc/rc.common#校园网服务START=41STOP=88stop(){ ps | grep 'python /root/CNClient/cnclientservice.py' | awk '{print $1}' | xargs kill > /dev/null 2>&1}start(){ stop python /root/CNClient/cnclientservice.py > /dev/null 2>&1 &}restart(){ start}
服务脚本中/root/CNClient/cnclientservice.py即是我们所做的python应用脚本,其逻辑与上一篇文章所说的整合了断网重连后的启动项脚本connect一致。这里还定义了openwrt系统服务所需要的3个方法,stop、start、restart,功能就如字面上的意思。START=41、STOP=88提供了该服务的启动优先级和关闭优先级,这里可以进入/etc/rc.d中去比较、去选择。如/etc/rc.d中的S20network,说明,network启动优先级是20,那么我们需要我们的服务在network之后启动,我这里选择了41。定义了START=41之后还需要在/etc/rc.d里建立一个符号链接文件,链接到/etc/init.d/cnclient。由于启动优先级是41,所以符号链接文件的名称是S41cnclient,同理还有关于关闭优先级的K88cnclient文件(优先级在network之前,network是K90)。
如此配置完毕后,每次路由启动,我们的应用就会自动启动了。使用/etc/init.d/cnclient start 或者 stop 或者 restart还可启动、关闭、重启服务。(写完这一系列文章后将会把python应用源码放在我的github,欢迎批评指正)
- 校园网&openwrt记(十四) init服务方法
- 校园网&openwrt记(八)PPTP VPN
- 校园网&openwrt记(九)防火墙
- 校园网&openwrt记(十)iproute2
- 校园网&openwrt记(十五)luci module
- 校园网&openwrt记(一)接触openwrt的原因
- 校园网&openwrt记(二)应用的大体设计
- 校园网&openwrt记(三)作为启动项
- 校园网&openwrt记(四)Lua发送udp包
- 校园网&openwrt记(七)断网重连,crontab,静态路由
- 校园网&openwrt记(十二)多线多播与mwan3
- 校园网&openwrt记(十三)断网重连的循环版本
- 校园网&openwrt记(五)构造udp包,Lua的int32运算和bit运算
- 校园网&openwrt记(六)获取拨号权限的rc.local启动项脚本
- 校园网&openwrt记(十一)策略路由实践 游戏端口走校园网关
- OpenWRT校园网ipv6设置
- 我的openwrt学习笔记(二十四):WIFI无线传输速率相对测试方法_netcat
- OpenWrt添加DDNS服务提供商(花生壳)的方法
- [从头学数学] 第129节 三角形 小结与复习题
- C# 静态扩展方法
- 《数据库》顺序有序表的合并
- Codeforces Round #345 (Div. 2) 总结
- 01背包问题程序源码(java)
- 校园网&openwrt记(十四) init服务方法
- 一种电池过放电保护电路
- linux 启动引导修复
- 编程格式
- HDU——2609How many(字符串的最小表示法+substr)
- 重磅消息,CMMI研究所并入ISACA!
- Android Studio 编译不通过,Unable to find optional library: org.apache.http.legacy
- if(false);
- 一步一步打造自己的VIM