校园网&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中,使其能够开机启动,从而自动联网。至此,成功了一半。
  
  

0 0
原创粉丝点击