|
本帖最后由 ralphj 于 2012-9-6 19:19 编辑
问题:
因为打游戏关系,我这里能拨到的3个IP段只有一个101开头的好用,可是非常难拨,每次都要拨很久才拨到.想要路由器能自动拨到指定IP段,否则就一直重拨.论坛上搜索了一下说以前有个帖子有编程,找了半天也没有找到,新人求助.
解答:
本人对于编程是一窍不通的,首先还是要感谢4楼抛砖引玉,我请了一个朋友帮我完成了这个问题.实测在本人的linksys E3200(系统用的是DD-WRT BUILD 19342)上完全可以实现,下面给出流程:
首先是telnet上路由器 输入完用户名和密码,先按照4楼说的那样ps一下,找到pppt这一行,复制一下(这就是拨号的一段)
1. cd /tmp/root (用pwd确认一下所在目录)
2. vi autodial
按一下i
粘贴进去
- #! /bin/bash
- ipaddr="0.0.0.0"
- count=0
- #start while loop
- while :
- do
- count=0
- count=`ps |grep pppd|grep -v grep |wc -l`
- #check if need dialing?
- if [ $count -gt 0 ]
- then
- echo "already dialing!"
- sleep 10
- else
- echo "not dialing,start dialing..."
- sleep 1
- pppd file /tmp/ppp/options.pppoe
- echo "sleep 30s for waiting finish dialing..."
- sleep 30
- echo "sleep over"
- fi
- #get ip head
- ipaddr=`ifconfig |grep -A1 "ppp0" |grep "inet" |awk -F . '{print $1}'|awk -F \: '{print $2}'`
- echo "current ip address head = ["${ipaddr}"]"
- #check ip if empty?
- if [ "${ipaddr}" != "" ]
- then
- #check ip if ok?
- if [ "${ipaddr}" = "101" ]
- then
- echo "Finish,Exit!"
- exit 0
- else
- sleep 1
- echo "not ok,go on ..."
- sleep 1
- echo "kill pppd"
- kill -9 `ps |grep pppd|awk '{print $1}'`
- sleep 1
- echo "kill ok!"
- echo "clear ip address!"
- ipaddr=""
- fi
- fi
- done
复制代码 (查看pppt的那一行替换line17,也就是上面一段中的pppd file /tmp/ppp/options.pppoe,当然,跟我一样的话,就不用替换了;我拨的是101的IP段换成其他的,请改line 29的数字)
按一下ESC 按一下: 输入wq 回车
3.执行 chmod +x ./autodial
执行 sh +x ./autodial
由于在web上运行,有的命令不能返回正常值,所以用的是telnet进路由器执行的办法.可是重启一次路由器,原来保存在路由器上的文件就没了,所以基本每次重启路由器执行都要完全重做一遍.虽然不能算是完美,不过比手动拨号要轻松很多了,希望对有用的人有帮助.
|
|