发一个简单的动态域名更新脚本
本帖最后由 zooyo 于 2009-1-5 09:18 编辑在论坛潜水N久了,学到不少东西。现在是时候回报论坛了。
最近在搞ROS的动态域名更新,因为很菜,搞了两星期,才弄明白怎么一回事。
现在把脚本放出来,希望新手少走弯路。
说说我的网络环境。我用的是ROS 2.9.27,三条ADSL,同网关,做NTH负载均衡。
首先,要在www.changeip.com上申请一个帐号,收到确认的邮件后激活帐号。
然后在"Add our free domains"里输入你的子域名,并选择一级域名,这里我选择changeip.org。
提醒一下,这里不要搞错了,不要输错到"Add your own domain"里去了,那个域名只有七天的试用期。
下面做的一步,就是确认你的ROS能用DDNS。
到winbox里,IP-Addrss,查看一下拨号得到的IP。
点击"New Terminal",输入:
/tool dns-update name=yourname.changeip.org(你的域名) address=10.10.10.10 key-name=用户名 key=密码
输入回车后,应该没有什么反应。
点击log,应该可以看到“DNS update sucessful”
如果出现connect error或timeout,请检查一下ROS设置和防火墙。
点击system-scheduler,新增一个计划任务,间隔Interval这里我选择00:03:00(每三分钟)更新一次,脚本如下:
#定义changeip的帐号:
:global ddns-user "username"
#定义changeip的密码:
:global ddns-pass "userpassword"
#定义你的二级域名:
:global ddns-host "username.changeip.net"
:global ddns-lastip [:resolve $ddns-host]
#外网网卡的名称,如果是ADSL拨号,就填写PPPOE拨号网卡的名称:
:global ddns-interface "pppoe-out1"
#--------下面的脚本请照抄,不用变。
#定义一个临时变量获取网卡的IP地址,得到的格式是x.x.x.x/32:
:global ddns-tempip [ /ip address get address ]
#因为上面的IP格式是x.x.x.x/32,所以要变成x.x.x.x:
:global ddns-ip [:pick $ddns-tempip 0 [:find $ddns-tempip "/"] ]
:if ($ddns-ip != $ddns-lastip) do={
/tool dns-update name=$ddns-host address=$ddns-ip key-name=$ddns-user key=$ddns-pass
:log info "DDNS: Update sucessful!"
} else={
:log info "DDNS: No change"
} 先谢了,有没有国内的DDNS厂商的脚本呢? 那要等ROS和国内的DDNS合作了先。 3322的DDNS更新我也做出来了,不过有点麻烦,可能很多人不愿去做。 说说你的方法呢 本帖最后由 robert_cao 于 2009-1-3 21:05 编辑
根据hcb前辈的提示做成的,原贴见下面连接:
http://bbs.router.net.cn/thread-27033-1-2.html
不过我觉得他的方法麻烦了一点,我改了一种更简单的方法来做。
首先要用一张linux的livecd光盘启动进入linux,再把那些文件放入ROS中,再改一下属性为可执行。
详细的教程等忙完了最近的事后再发出来,请大家耐心等一下。 鼓励大家原创,谢谢对论坛的支持。 看了不顶不行哪。呵呵。。我要问一下我没搞过ddns所以不太清楚。。因为我最近才搞ROS的。 而且没你那样的真实环境..所以我要问一下你 : $ ddns-lastip 这个从那里来的。是系统本身就存在的了吗。。? 我看到别人那里的是 :local dnsip(相当于你的ddns-lastip) [:resolve ($domain)]
就是这一点我看到有点模糊。。请斑主说一下。以解决我的疑问?谢谢。。对了。你说还有你的那个3322的域名你也做了。 拿出来大家看看嘛。。!! 呵呵。。。 8# georgetan
sorry,少了脚本里少了一句:
:global ddns-lastip [:resolve $ddns-host]
请zooyo兄帮忙修改一下贴子,加在这句话之后,现在我已经不能修改了:
#--------下面的脚本请照抄,不用变。
:global ddns-lastip [:resolve $ddns-host]
georgetan很细心,谢谢。
我的做法很简单。ddns-lastip就是现有DDNS的IP,可以用[:resolve hostname]获得。ddns-ip就是拨号所得到的IP。它们两个比较,如果一致就不用更新DDNS,如果不一致就更新DDNS。
至于3322的DDNS,因为是用linux做出来的,还没有把图片存下来,近期还不能上传,请georgetan耐心等一下。 记录一下 我的DDNS~3.30~
页:
[1]