找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 13198|回复: 15

关于DD-WRT自动拨号到指定IP段的问题(已完成)

[复制链接]
发表于 2012-9-4 17:30 | 显示全部楼层 |阅读模式
本帖最后由 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
    粘贴进去

  1. #! /bin/bash
  2. ipaddr="0.0.0.0"
  3. count=0
  4. #start while loop
  5. while :
  6. do
  7.   count=0
  8.   count=`ps |grep pppd|grep -v grep |wc -l`
  9.   #check if need dialing?
  10.   if [ $count -gt 0 ]
  11.     then
  12.       echo "already dialing!"
  13.       sleep 10
  14.     else
  15.       echo "not dialing,start dialing..."
  16.       sleep 1
  17.       pppd file /tmp/ppp/options.pppoe
  18.       echo "sleep 30s for waiting finish dialing..."
  19.       sleep 30
  20.       echo "sleep over"
  21.   fi
  22.   #get ip head
  23.   ipaddr=`ifconfig |grep -A1 "ppp0" |grep "inet" |awk -F . '{print $1}'|awk -F \: '{print $2}'`
  24.   echo "current ip address head = ["${ipaddr}"]"
  25.   #check ip if empty?
  26.   if [ "${ipaddr}" != "" ]
  27.     then
  28.       #check ip if ok?
  29.       if [ "${ipaddr}" = "101" ]
  30.           then
  31.               echo "Finish,Exit!"
  32.               exit 0
  33.           else
  34.               sleep 1
  35.               echo "not ok,go on ..."
  36.               sleep 1
  37.               echo "kill pppd"
  38.               kill -9 `ps |grep pppd|awk '{print $1}'`
  39.               sleep 1
  40.               echo "kill ok!"
  41.               echo "clear ip address!"
  42.               ipaddr=""
  43.       fi
  44.   fi
  45. done
复制代码
(查看pppt的那一行替换line17,也就是上面一段中的pppd file /tmp/ppp/options.pppoe,当然,跟我一样的话,就不用替换了;我拨的是101的IP段换成其他的,请改line 29的数字)

按一下ESC 按一下: 输入wq 回车

3.执行 chmod +x ./autodial
  执行 sh +x ./autodial


由于在web上运行,有的命令不能返回正常值,所以用的是telnet进路由器执行的办法.可是重启一次路由器,原来保存在路由器上的文件就没了,所以基本每次重启路由器执行都要完全重做一遍.虽然不能算是完美,不过比手动拨号要轻松很多了,希望对有用的人有帮助.  


只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-4 17:32 | 显示全部楼层
同求...
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-4 20:10 | 显示全部楼层
外网IP的分配是ISP层面的东西,管终端什么事。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-4 21:19 | 显示全部楼层
表示bash菜b,代码仅供参考,不确定可用,bash高手请轻喷..
首先telnet/ssh,接着ps复制pppd和后面的参数备用,注意宽带帐户密码是明文的注意核对
然后创建WAN初始化脚本

  1. #! /bin/bash
  2. SUCCEEDED=0

  3. while [ $SUCCEEDED -ne 1 ]; do

  4. function CheckIP {
  5. for var in `echo $1 | awk -F. '{print $1}'`
  6. do
  7. if [ $var -eq 101  ]
  8. then
  9. let SUCCEEDED=SUCCEEDED+1
  10. return 0

  11. else
  12. (填入pppd及后面的参数)

  13. fi
  14. done
  15. }

  16. done
复制代码
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-6 13:52 | 显示全部楼层
围观
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-10 21:36 | 显示全部楼层
外网IP的分配是ISP层面的东西,管终端什么事。
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-23 13:01 | 显示全部楼层
本帖最后由 ffffffeeeee 于 2012-9-23 13:06 编辑

太复杂了,每次重启都要搞一次啊

如果能做成脚本,开机运行一下,倒还可以接受
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2012-9-23 13:42 | 显示全部楼层
看一下!!!
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2013-10-5 19:10 | 显示全部楼层
请问楼主这个可以在没刷DD-WRT的tenda路由器上实现吗?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2013-10-9 18:07 | 显示全部楼层
这个脚本就是每次拨号上去看看是不是101的ip 如果不是就断线重新拨号等ISP分配一个新的... 如果得到一个101的ip就不再重新拨了~~呵呵

楼上的没有linux shell的就别想了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2013-10-9 18:19 | 显示全部楼层
不太懂 #!/bin/bash  #!/bin/sh 的区别

/tmp 是内存生产的临时目录,掉电旧消失。
/jffs 是flash生成的目录

我只弄过 把 .sh ( 第一行是#!/bin/sh  )文件存放在JFFS区,然后再启动命令里面运行,

如果 #!/bin/bash 也可以,就不用每次重启都要搞一通那么麻烦了
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2013-10-13 22:38 | 显示全部楼层
aimengs 发表于 2013-10-9 18:07
这个脚本就是每次拨号上去看看是不是101的ip 如果不是就断线重新拨号等ISP分配一个新的... 如果得到一个101 ...

嗯  我的是Tenda W268R。。确实比较弱  我在想能不能做个chrome插件之类的
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2014-4-14 10:27 来自手机 | 显示全部楼层
贴进管理,命令中不知道可行不?
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2014-4-15 13:08 | 显示全部楼层
好东西啊,太感谢楼主了,我在TT上实验成功
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
发表于 2015-12-19 20:33 | 显示全部楼层
好东西,可惜不会编程,留个记号
只谈技术、莫论政事!(点击见详情) | 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-9-28 12:59

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表