查看: 682|回复: 9

[OpenWRT] 大神帮忙改一下脚本

[复制链接]

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-8 22:53 |显示全部楼层
TG-NET
300金币
K2用的老毛子华硕固件,看到有大神分享了个自动重拨脚本
链接:http://www.right.com.cn/forum/fo ... A%B6%C8%B8%FC%D0%C2

但是我想精确到第二段IP,比如:223.121.XX.XX   精确到223.121这个IP段,麻烦兄弟们帮忙改一下!


  1. #!/bin/sh
  2. j='0'
  3. for i in `seq 50`;
  4. #做50次拨号循环,50次如果都没拨上也停止
  5. do
  6. IP=$(ifconfig pppoe-wan 2> /dev/null | grep 'inet addr' | awk '{print $2}' | cut -d: -f2)
  7. #获取wan口ip
  8. IPP=${IP:0:2}
  9. #取wan口IP前二位
  10. echo "Current IP:"
  11. echo $IP

  12. if [ "$IPP" = "0." ]; then
  13. #如果没有获取到IP,延时2秒
  14. echo "please wait 2 second"
  15. sleep 2

  16. elif [ "$IPP" = "" ]; then
  17. #意外情况,等待2秒
  18. echo "error,please wait 2 second"
  19. sleep 2
  20. j=`expr $j + 1`;
  21. echo "error times :"
  22. echo $j
  23. if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
  24. ifdown wan | ifup wan
  25. sleep 2
  26. else
  27. continue
  28. fi

  29. elif [ "$IPP" = "10" ]; then
  30. #如果IP开头是10的话,重拨
  31. echo "Intranet IP:"
  32. echo $IP
  33. ifdown wan | ifup wan
  34. sleep 2


  35. else
  36. #保留IP,跳出循环
  37. echo "Public IP:"
  38. echo $IP
  39. break


  40. fi
  41. done
复制代码


主题

好友

1万

积分

上校

签到天数: 234 天

[LV.7]常住居民III

发表于 2016-9-8 22:53 |显示全部楼层
本帖最后由 chensksk 于 2016-9-9 11:29 编辑
熊貓 发表于 2016-9-9 00:50
主要是我这里有的IP段玩LOL电一延迟低比较舒服。。不过感觉不对啊,这样拨到我需要的IP段,就重拨了啊。  ...
  1. #!/bin/sh
  2. j='0'
  3. for i in `seq 50`;
  4. #做50次拨号循环,50次如果都没拨上也停止
  5. do
  6. IPP=$(ifconfig pppoe-wan 2> /dev/null |grep -ioE 'addr:([0-9.])+'|sed -n '1p'|awk -F '[:.]' '{print $2"."$3}')
  7. #获取wan口ip前二位
  8. IP=${IPP%%.*}
  9. #保留wan口ip第一位

  10. if [ "$IPP" = "0.0" ]; then
  11.         #如果没有获取到IP,延时2秒
  12.         echo "please wait 2 second"
  13.         sleep 2

  14. elif [ "$IPP" = "" ]; then
  15.         #意外情况,等待2秒
  16.         echo "error,please wait 2 second"
  17.         sleep 2

  18.         j=`expr $j + 1`;
  19.         echo "error times :"
  20.         echo $j

  21.         if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
  22.                 ifdown wan | ifup wan
  23.                 sleep 2
  24.         fi

  25. #判断ip前两位,为目标IP时跳出循环,多个IP添加 或 条件“ ||[ "$IPP" = "XX.XX" ] ”
  26. elif [ "$IPP" = "10.10" ]||[ "$IPP" = "172.10" ]; then
  27.         #保留IP,跳出循环
  28.         echo "Public IP:"
  29.         echo $IPP
  30.         break

  31. else
  32.         #非目标IP,重拨
  33.         echo "Intranet IP:"
  34.         echo $IPP
  35.         ifdown wan | ifup wan
  36.         sleep 2

  37. fi
  38. done
复制代码
回复

使用道具 举报

主题

好友

1万

积分

上校

签到天数: 234 天

[LV.7]常住居民III

发表于 2016-9-8 23:53 |显示全部楼层
你第7行跟第9行说截取ip前两位,然后后面的if条件全是ip前一位的,结果就是直接执行最后else保留IP,跳出循环的操作吧
回复

使用道具 举报

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-9 00:22 |显示全部楼层
chensksk 发表于 2016-9-8 23:53
你第7行跟第9行说截取ip前两位,然后后面的if条件全是ip前一位的,结果就是直接执行最后else保留IP,跳出循 ...

这个是看到别人发的脚本,他这个好像只判断第一段IP,我想判断前两段IP。兄弟你能帮我改一下吗?
回复

使用道具 举报

主题

好友

1万

积分

上校

签到天数: 234 天

[LV.7]常住居民III

发表于 2016-9-9 00:30 |显示全部楼层
本帖最后由 chensksk 于 2016-9-9 00:35 编辑
熊貓 发表于 2016-9-9 00:22
这个是看到别人发的脚本,他这个好像只判断第一段IP,我想判断前两段IP。兄弟你能帮我改一下吗?
  1. #!/bin/sh
  2. j='0'
  3. for i in `seq 50`;
  4. #做50次拨号循环,50次如果都没拨上也停止
  5. do
  6. IPP=$(ifconfig pppoe-wan 2> /dev/null |grep -ioE 'addr:([0-9.])+'|sed -n '1p'|awk -F '[:.]' '{print $2}')
  7. #获取wan口ip前二位
  8. IP=${IPP%%.*}
  9. #保留wan口ip第一位

  10. if [ "$IPP" = "0.0" ]; then
  11.         #如果没有获取到IP,延时2秒
  12.         echo "please wait 2 second"
  13.         sleep 2

  14. elif [ "$IPP" = "" ]; then
  15.         #意外情况,等待2秒
  16.         echo "error,please wait 2 second"
  17.         sleep 2

  18.         j=`expr $j + 1`;
  19.         echo "error times :"
  20.         echo $j

  21.         if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
  22.                 ifdown wan | ifup wan
  23.                 sleep 2
  24.         fi

  25. #判断ip第一位,如果需要判断两位,将 [ "$IP" = "10" ] 换成 [ "$IPP" = "10.??" ],其中 ?? 换成对应数字
  26. elif [ "$IP" = "10" ]; then
  27.         #如果IP开头是10的话,重拨
  28.         echo "Intranet IP:"
  29.         echo $IP
  30.         ifdown wan | ifup wan
  31.         sleep 2

  32. else
  33.         #保留IP,跳出循环
  34.         echo "Public IP:"
  35.         echo $IP
  36.         break

  37. fi
  38. done
复制代码


主要修改31-36行,不过你判断2位没啥意义吧
回复

使用道具 举报

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-9 00:50 |显示全部楼层
本帖最后由 熊貓 于 2016-9-9 00:53 编辑
chensksk 发表于 2016-9-9 00:30
主要修改31-36行,不过你判断2位没啥意义吧

主要是我这里有的IP段玩LOL电一延迟低比较舒服。。不过感觉不对啊,这样拨到我需要的IP段,就重拨了啊。 怎样改能让拨到需要的IP段停止,没拨到才继续循环呢?
回复

使用道具 举报

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-9 01:00 |显示全部楼层
chensksk 发表于 2016-9-9 00:30
主要修改31-36行,不过你判断2位没啥意义吧

[ "$IPP" -ne "223.121" ]

改成这样对吗?
回复

使用道具 举报

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-9 01:07 |显示全部楼层

谢谢兄弟,你真是热心肠啊~ 明天我试一下,有问题再请教你。
回复

使用道具 举报

主题

好友

1万

积分

上校

签到天数: 234 天

[LV.7]常住居民III

发表于 2016-9-9 11:31 |显示全部楼层
熊貓 发表于 2016-9-9 01:07
谢谢兄弟,你真是热心肠啊~ 明天我试一下,有问题再请教你。

昨晚7楼的第6行忘了该,编辑过了
回复

使用道具 举报

主题

好友

1447

积分

上尉

签到天数: 280 天

[LV.8]以坛为家I

发表于 2016-9-9 20:40 |显示全部楼层
chensksk 发表于 2016-9-9 11:31
昨晚7楼的第6行忘了该,编辑过了

回家了,最近测试不了这个脚本了。过段时间测试有问题请教你,兄弟。给你最佳~~谢谢你的帮忙!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

Archiver| 手机版| 中国无线门户 ( 粤ICP备11076993 )  |网站地图    小黑屋 | 免责声明

GMT+8, 2016-12-8 15:57

Powered by Discuz! X3.2

© 2003-2013 广州威思信息科技有限公司

返回顶部 返回列表