Linux: 3322.org+lynx+crontab 实现ddns的自动刷新

来源:互联网 发布:彩票源码程序 编辑:程序博客网 时间:2024/03/29 13:34

 现在的ddns实现个人网站是越来越流行了,不过我要的只是能够远程访问位于adsl拨号网背后加路由器的Debian服务器,大概电信的家庭用户大多是这种接入方式。电信的固定IP服务是没有能力享用的,同样的带宽就凭空多收好几倍的价钱,不是明摆着暴力抢劫吗,我可不想当这样的冤大头,所以只能自己动手解决了。

 

Google一下,蛮大堆的花生壳的资料,好吧咱也入乡随俗,申请一个免费的花生壳域名,免费ddns可用了,路由器上刚好有这个选项,再好不过了。本以为天下太平了,高高兴兴的用了没几天,新的问题出现了:俺的路由器是非认证路由器,所以被无情的屏蔽了,不但是高峰时期无法访问了,平时空闲的时候也不给解析,看来还是得想其他的辄儿,虽然花生壳的收费服务也不算贵,但这种屏蔽行为却让我很是厌恶,决定不从花生壳身上下功夫了。

 

国外的ddns域名服务很多了,路由器的ddns选项里边也带了几个,可惜都被电信运营商给无情的和谐了。

最后伟大的免费提供商出现在了我的视线,就是这个3322,不仅好用,而且可通过简单的http命令来手动刷新,这就给脚本以很大的方便,自动写脚本刷新可比依靠不可靠的路由器客户端靠谱多了。

 

 


 

由此即想到了伟大了控制台程序lynx,最早的浏览器之一了,在终端运行,而且很方便脚本调用。对付这种情况,构造一个基本的ddns刷新数据包也是非常方便的:

         lynx -mime_header -auth=<user>:<password> "http://www.3322.org/dyndns/update?system=dyndns&hostname=<your registered dynamic domain>"

 

这里填写注册的用户名和密码,以及网站提供的免费域名,执行后,就会有相应消息,显示当前的公网IP注册成功了。

 

 


 

自动刷新的工作就好办多了,交给crontab和shell脚本去做正合适了:

cat update_ddns.sh

#!/bin/bash
ipaddr=`lynx -mime_header -auth=
<user>:<password> "http://www.3322.org/dyndns/update?system=dyndns&hostname=<your registered dynamic domain>" | egrep "[0-9]+/.[0-9]+/.[0-9]+/.[0-9]+"|awk '{print $2}'`

date=`date "+%y-%m-%d %H:%M"`
echo $date $ipaddr

这里我把时间、IP地址 打印出来,便于后续分析查看。

 

 


 

接下来,install some crontab(编辑, crontab -e)

crontab -l

0,30 18-23  *  * 1-5 /home/user1/bin/update_ddns.sh >> /home/user1/log/ddns.log


 


 

为了清晰的看到电信修改IP的频率,再加上一个脚本分析产生的log,仅将IP变化的情况过滤出来:

cat trim_ddns.sh

#!/bin/bash

cat /home/user1/log/ddns.log | awk '{ if (NF < 2) {print $0;} else if ($3 != lastip) { lastip=$3; print $0} }' | uniq > /home/user1/log/ip_update.log

 

 


 

最后,再来一个crontab吧,得到一个过滤后的ip地址更新信息:

0 0 * * 5 /home/user1/bin/trim_ddns.sh

 

我的IP地址信息如下:

============================
Date     Time    IP Addr
----------------------------
09-05-07 18:24 125.118.6.115
----------------------------
09-05-09 19:00 125.119.10.61
----------------------------
09-05-13 18:30 115.192.215.162
----------------------------

 

看来电信的IP更换频率大概是不到一个星期就刷一次了,因为我的路由器从来没关机过。

 

原创粉丝点击