自动获取ip.(自动获取ip地址)
时间:2023-10-29 18:30:09 浏览量:64
文章背景:
网友是江苏省中国移动的宽带用户,移动宽带上网需要拨号,而且有时候拨号获得的是公网IP,有时候获取到的是内网IP,向我求助帮忙,编写个脚本,让路由器自动判断。获取到内网IP就自动重启,直到获取到公网为止。并且凌晨时段拨号上网获取公网IP几率最大,实际上利用前面文章中办法,root后添加定时重启即可。下图就是内网IP。下面看一下具体办法:
1、先root路由器(文中路由器就是优酷路由宝),方法是先下载开telnet的固件,然后电脑连接路由器,打开浏览器,输入192.168.11.1进入路由器管理页面,登录后点击顶部菜单,更多设置,手动升级,如下图所示。
2、点击上传文件按钮,浏览电脑中文件,找到刚才的开telnet固件,点击文件上传。上传成功后,通过验证,确认升级。如下图所示。等待几分钟路由器重启,然后拔路由器恢复出厂设置再次重启。(这一步不是必须,只有telnet不能登录路由器时才需要恢复出厂设置。)
3、等几分钟路由器重启后,电脑再次连接路由器,然后用xshell登录成功路由器。如下图所示。
4、添加判断脚本,通过拨号后wan口获取的ip,截取第一段来判断,ip地址中第一段是172或192和100的都是内网ip,然后路由器自动重启,重启后再次拨号判断,一直循坏。然后在添加定时任务,每2分钟执行一次判断脚本。
在命令窗口
输入cd /bin 回车,切换目录到bin。
输入vi check.sh 回车,编辑脚本文件。
5、按下字母“i”进入编辑状态,输入以下脚本或者选择复制,进入编辑窗口粘贴进去。然后按Esc提出编辑,按下“:wq”保存脚本
#!/bin/sh
logtime=`date " %Y-%m-%d %H:%M"`
ip1="$(ifconfig pppoe-wan|awk 'NR==2{print$2}'|awk '{sub("addr:","");print}'|awk -F '.' '{print $1;}')"
if [ "$ip1"x = "172"x ] || [ "$ip1"x = "192"x ] || [ "$ip1"x = "100"x ];
then
reboot
else
fi
保存脚本后,赋予脚本执行权限。输入命令 chmod 777 check.sh
6、添加定时任务,设置每2分钟判断一次,不是公网IP就重启路由器。
在命令窗口,输入 crontab -e 回车。
按下“i”键,进入编辑模式。
输入 */2 * * * * /bin/check.sh
按下Esc键,退出编辑模式。输入“:wq”(不带引号,注意大小写,冒号是英文的)回车。
所有操作完成。重启一次路由器。以后重启自动获取公网,不是公网会自动重启。如果不需要该脚本了,进入命令行输入 rm /bin/check.sh回车即可删除。
注意:
1、如果当地拨号获取不到公网,脚本会让路由器反复重启,此时只能重启后两分钟内删除脚本或者恢复出厂设置也可以清除脚本。命令中星号之间有空格。
2、只有当地宽带拨号有时候获取到公网IP,有时候获取到内网IP脚本就适用,不限于中国移动宽带或中国电信宽带。脚本仅仅是代替了手动重启路由器。