大神帮忙改一下脚本
K2用的老毛子华硕固件,看到有大神分享了个自动重拨脚本链接:http://www.right.com.cn/forum/fo ... A%B6%C8%B8%FC%D0%C2
但是我想精确到第二段IP,比如:223.121.XX.XX 精确到223.121这个IP段,麻烦兄弟们帮忙改一下!
#!/bin/sh
j='0'
for i in `seq 50`;
#做50次拨号循环,50次如果都没拨上也停止
do
IP=$(ifconfig pppoe-wan 2> /dev/null | grep 'inet addr' | awk '{print $2}' | cut -d: -f2)
#获取wan口ip
IPP=${IP:0:2}
#取wan口IP前二位
echo "Current IP:"
echo $IP
if [ "$IPP" = "0." ]; then
#如果没有获取到IP,延时2秒
echo "please wait 2 second"
sleep 2
elif [ "$IPP" = "" ]; then
#意外情况,等待2秒
echo "error,please wait 2 second"
sleep 2
j=`expr $j + 1`;
echo "error times :"
echo $j
if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
ifdown wan | ifup wan
sleep 2
else
continue
fi
elif [ "$IPP" = "10" ]; then
#如果IP开头是10的话,重拨
echo "Intranet IP:"
echo $IP
ifdown wan | ifup wan
sleep 2
else
#保留IP,跳出循环
echo "Public IP:"
echo $IP
break
fi
done
本帖最后由 chensksk 于 2016-9-9 11:29 编辑
熊貓 发表于 2016-9-9 00:50
主要是我这里有的IP段玩LOL电一延迟低比较舒服。。不过感觉不对啊,这样拨到我需要的IP段,就重拨了啊。...
#!/bin/sh
j='0'
for i in `seq 50`;
#做50次拨号循环,50次如果都没拨上也停止
do
IPP=$(ifconfig pppoe-wan 2> /dev/null |grep -ioE 'addr:()+'|sed -n '1p'|awk -F '[:.]' '{print $2"."$3}')
#获取wan口ip前二位
IP=${IPP%%.*}
#保留wan口ip第一位
if [ "$IPP" = "0.0" ]; then
#如果没有获取到IP,延时2秒
echo "please wait 2 second"
sleep 2
elif [ "$IPP" = "" ]; then
#意外情况,等待2秒
echo "error,please wait 2 second"
sleep 2
j=`expr $j + 1`;
echo "error times :"
echo $j
if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
ifdown wan | ifup wan
sleep 2
fi
#判断ip前两位,为目标IP时跳出循环,多个IP添加 或 条件“ ||[ "$IPP" = "XX.XX" ] ”
elif [ "$IPP" = "10.10" ]||[ "$IPP" = "172.10" ]; then
#保留IP,跳出循环
echo "Public IP:"
echo $IPP
break
else
#非目标IP,重拨
echo "Intranet IP:"
echo $IPP
ifdown wan | ifup wan
sleep 2
fi
done 你第7行跟第9行说截取ip前两位,然后后面的if条件全是ip前一位的,结果就是直接执行最后else保留IP,跳出循环的操作吧:L
chensksk 发表于 2016-9-8 23:53
你第7行跟第9行说截取ip前两位,然后后面的if条件全是ip前一位的,结果就是直接执行最后else保留IP,跳出循 ...
这个是看到别人发的脚本,他这个好像只判断第一段IP,我想判断前两段IP。兄弟你能帮我改一下吗? 本帖最后由 chensksk 于 2016-9-9 00:35 编辑
熊貓 发表于 2016-9-9 00:22
这个是看到别人发的脚本,他这个好像只判断第一段IP,我想判断前两段IP。兄弟你能帮我改一下吗?
#!/bin/sh
j='0'
for i in `seq 50`;
#做50次拨号循环,50次如果都没拨上也停止
do
IPP=$(ifconfig pppoe-wan 2> /dev/null |grep -ioE 'addr:()+'|sed -n '1p'|awk -F '[:.]' '{print $2}')
#获取wan口ip前二位
IP=${IPP%%.*}
#保留wan口ip第一位
if [ "$IPP" = "0.0" ]; then
#如果没有获取到IP,延时2秒
echo "please wait 2 second"
sleep 2
elif [ "$IPP" = "" ]; then
#意外情况,等待2秒
echo "error,please wait 2 second"
sleep 2
j=`expr $j + 1`;
echo "error times :"
echo $j
if [ "$j" -ge "5" ]&&[ "$IPP" = "" ]; then
ifdown wan | ifup wan
sleep 2
fi
#判断ip第一位,如果需要判断两位,将 [ "$IP" = "10" ] 换成 [ "$IPP" = "10.??" ],其中 ?? 换成对应数字
elif [ "$IP" = "10" ]; then
#如果IP开头是10的话,重拨
echo "Intranet IP:"
echo $IP
ifdown wan | ifup wan
sleep 2
else
#保留IP,跳出循环
echo "Public IP:"
echo $IP
break
fi
done
主要修改31-36行,不过你判断2位没啥意义吧 本帖最后由 熊貓 于 2016-9-9 00:53 编辑
chensksk 发表于 2016-9-9 00:30
主要修改31-36行,不过你判断2位没啥意义吧
主要是我这里有的IP段玩LOL电一延迟低比较舒服。。不过感觉不对啊,这样拨到我需要的IP段,就重拨了啊。 怎样改能让拨到需要的IP段停止,没拨到才继续循环呢? chensksk 发表于 2016-9-9 00:30
主要修改31-36行,不过你判断2位没啥意义吧
[ "$IPP" -ne "223.121" ]
改成这样对吗? chensksk 发表于 2016-9-9 01:01
谢谢兄弟,你真是热心肠啊~ 明天我试一下,有问题再请教你。 熊貓 发表于 2016-9-9 01:07
谢谢兄弟,你真是热心肠啊~ 明天我试一下,有问题再请教你。
昨晚7楼的第6行忘了该,编辑过了 chensksk 发表于 2016-9-9 11:31
昨晚7楼的第6行忘了该,编辑过了
回家了,最近测试不了这个脚本了。过段时间测试有问题请教你,兄弟。给你最佳~~谢谢你的帮忙!
页:
[1]