jike106397 发表于 2013-11-4 17:30:31

测试可用的NO-IP更新脚本,需要的拿去

公司要做一个域名解析,用到NO-IP的动态域名,看到前天这个贴子发的,实验下,不能更新成功。稍微改改动下,可以了。有需要的拿去。
http://bbs.routerclub.com/forum.php?mod=viewthread&tid=70790&highlight=no-ip#定义 no.ip 相关设定,以下自行修改:
#============================================================
:local DDNSUser "用户名"
:local DDNSPassword "密码"
:local DDNSHost "你的主机名"

#============================================================
#以下程式如不了解,建议不要修改:
#------------------------------------------------------------------------------------------
#定义 IP 变量
:local DDNSIP
:global DDNSLastIP
#定义变量默认值
:if ([ :typeof $DDNSLastIP ] = nil ) do={ $DDNSLastIP "0.0.0.0" }
#利用HTTP查询Public IP
/tool fetch address=checkip.dyndns.com src-path=/ mode=http dst-path=("PublicIP");
:delay 1;
#读取档案
:set DDNSIP ;
:set DDNSIP [:pick $DDNSIP 0 [:find $DDNSIP "</body>"]];
:set DDNSIP [:pick $DDNSIP ([:find $DDNSIP ":"]+2) 100];

#删除档案
/file remove PublicIP;
#判断是否要更新 IP

:if ([ :typeof $DDNSIP ] = nil ) do={
:log error ("DDNS no.ip: 网络未取得 IP 位址")
} else={
:if ($DDNSIP != $DDNSLastIP) do={
# 更新 DDNS IP
#这个地方在?号前要国个\才能解析的,只改了这一个地方。
:local url "/nic/update\?hostname=$DDNSHost&myip=$DDNSIP"
/tool fetch address=dynupdate.no-ip.com src-path=$url mode=http user=$DDNSUserpassword=$DDNSPassword dst-path=("DDNS_no_ip")
:delay 1

# 档案内容
:local filestr [ /file get "DDNS_no_ip" contents];

# 删除档案
:local filename [ /file find name="DDNS_no_ip"];
/file remove $filename

# 变更是否成功
:if ( [ :find $filestr "good"] = "0" || [ :find $filestr "nochg"] = "0" ) do={
:log warning ("DDNS no.ip: 网络更新 IP 位址 " . $DDNSIP)
:set DDNSLastIP $DDNSIP
} else={
:log error ("DDNS no.ip: 网络更新 IP 位址失败 " . $DDNSIP)
}
}
}

yadekk 发表于 2013-11-19 00:47:30

很需要!但不太懂?不過還是感謝分享!!
页: [1]
查看完整版本: 测试可用的NO-IP更新脚本,需要的拿去