校园网&openwrt记(六)获取拨号权限的rc.local启动项脚本
来源:互联网 发布:淘宝服装店女装推荐 编辑:程序博客网 时间:2024/06/04 18:30
在这里,Lua写的构造获取拨号权限的udp包并发送的脚本仅仅作为工具使用(假设其名字为getperm.lua),它所接收的参数为6个:ipv4地址的4个数值(如:192、168、66、66),mac地址(66:66:66:66:66:66)和网络提供商代号(1:联通,2:电信,3:移动)。而真正的启动脚本,我用的是shell来编写(当然也可以单纯使用Lua来完成所有任务,nixio里有可以执行shell命令的函数),这个脚本(假设名字为connect)中,我简单地获取需要pppoe拨号的wan口的mac地址和该wan口获取到的校园网ip,并填写我所拥有的宽带的服务商代号(假设为移动,3)。
获取ip和mac的方法可以为:
isp=3wan=eth0.2mac=$(ifconfig $wan | grep 'HWaddr' | sed 's/^.*addr //g' | sed -r 's/ //g')ip=$(ifconfig $wan | grep 'inet addr' | sed -r 's/^.+addr://g' | cut -d" " -f1)
ip分为4个数值:
ip1=$(echo ${ip} | cut -d"." -f1)ip2=$(echo ${ip} | cut -d"." -f2)ip3=$(echo ${ip} | cut -d"." -f3)ip4=$(echo ${ip} | cut -d"." -f4)
获取完毕后将这些变量作为getperm.lua的参数来运行。
# ...是getperm.lua所在的目录.../getperm.lua $ip1 $ip2 $ip3 $ip4 $mac $isp
若正常获取到校园网ip,且该ip是可以pppoe的话,等到getperm.lua中的socket获取到服务器的reply后,就说明获取权限成功,可以在该wan上进行pppoe拨号了。
想当初,我犯了一个比较傻逼的错误,就是成功获取权限后去修改wan的协议,将其从dhcp修改到pppoe,拨号后获取得到的是pppoe服务器分配的ip,使得看不到校园网的ip地址。这样虽然不是不可以,但是毕竟操作麻烦,而且对于后续使用pptp vpn有着极大的障碍。幸好我们宿舍的大神提醒了我,ethXXX是以太网接口,表示以太网连接的物理接口,而pppXXX是经以太网接口PPP拨号时创建的链路接口,用以建立PPP拨号连接的,通常依赖于eth接口,也就是说eth是实体接口,ppp是构建于eth之上的虚拟接口。所以,我们完全没有必要修改wan口的协议,这时只需要添加一个专门pppoe拨号的接口(假设名称就是pppoe)即可。将宽带账号密码填写在pppoe接口中,等待获取拨号权限成功后,再重新启动该接口就可以成功拨号上网了。所以在我的启动项脚本connect中的调用getperm.lua之后,我重启了pppoe接口。
ifup pppoe
最后,将该脚本写入rc.local中,使其能够开机启动,从而自动联网。至此,成功了一半。
- 校园网&openwrt记(六)获取拨号权限的rc.local启动项脚本
- 校园网&openwrt记(三)作为启动项
- linux启动后执行脚本(/etc/rc.local文件)
- 校园网&openwrt记(一)接触openwrt的原因
- Ubuntu 创建开机启动脚本的一种方法(rc.local)
- Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?
- Linux 中 rc.local、init.d、rc.x、init 这几个文件(夹)各有什么作用?启动执行的脚本应该均放在 rc.local 中吗?
- 开机启动服务chkconfig开机启动脚本/etc/rc.local
- 树莓派的rc.local文件(设置开机启动)
- 校园网&openwrt记(二)应用的大体设计
- 校园网&openwrt记(十三)断网重连的循环版本
- 树莓派Debian开机启动项(rc.local)
- (OK) Fedora 24 开机自动启动脚本 - rc.local - rc-local.service
- init.d目录、rc#.d目录和rc.local脚本——系统服务的启动和停止
- linuxrc文件,rc.local文件,rcS文件,我的根文件系统启动脚本文件
- Linux的rc.local自启动服务
- Linux的rc.local自启动服务
- Linux的rc.local自启动服务
- velocity之set
- 用SourceTree合并工程冲突,工程打不开时的操作
- Spring 事务配置
- 怎样解决MySQL数据库主从复制延迟的问题
- Gradle多渠道打包
- 校园网&openwrt记(六)获取拨号权限的rc.local启动项脚本
- Redis数据类型及操作详解
- SRILM的安装方法
- 集成新版(5.17+)Activiti Modeler与Rest服务
- ios倒计时的实现方法
- 配置spring所需要的jar包
- C#调用mysql,使用带参数mysql语句
- Android项目:手机安全卫士(5)—— 自定义弹窗
- Android多线程更新UI