標題:
自動更新no-ip ddns Script!!
[打印本頁]
作者:
gfx86674
時間:
2015-1-12 00:55
標題:
自動更新no-ip ddns Script!!
本帖最後由 gfx86674 於 2015-2-16 17:30 編輯
小弟個人debug並優化的no-ip自動更新Script ,有興趣的朋友可試試
#===========no-ip資訊=============
:local noipuser "abc1234@gmail.com"
:local noippass "123456"
:local noiphost "abc1234.no-ip.org"
#=================================
:if ([/ip cloud get ddns-enabled]=no) do={/ip cloud set ddns-enabled=yes}
/ip cloud force-update ;:delay 3
:local noipnew [/ip cloud get public-address]
:global noipold
:if ([:typeof $noipold]="nothing") do={:set noipold [:resolve $noiphost]}
:if ($noipnew!=$noipold) \
do={:local url "/nic/update?hostname=$noiphost&myip=$noipnew"
/tool fetch address=dynupdate.no-ip.com src-path=$url mode=http \
user=$noipuser password=$noippass dst-path=("ddns-noip")
:delay 1
:local filestr [/file get "ddns-noip" contents]
/file remove [/file find name="ddns-noip"]
:if ([:find $filestr "good"]="0"||[:find $filestr "nochg"]="0") \
do={:log warning ("更新no-ip地址: ".$noipnew)
:set noipold $noipnew} \
else={:log error "更新no-ip失敗!!"}}
複製代碼
成功更新log:
作者:
yiucsw
時間:
2015-1-13 17:17
谢谢,刚改用你的Script。不用其他Check Real Ip 的网站。
作者:
gfx86674
時間:
2015-2-16 01:19
本帖最後由 gfx86674 於 2015-2-16 16:56 編輯
回復
2#
yiucsw
注意更新v6.27後 ,cloud名稱有變,所以腳本也要跟著變!
更新前:
:if ([/ip cloud get enabled]=no) do={/ip cloud set enabled=yes}
更新後:
:if ([/ip cloud get ddns-enabled]=no) do={/ip cloud set ddns-enabled=yes}
作者:
yiucsw
時間:
2015-2-17 00:03
谢谢你,还在想如何改。
作者:
yiucsw
時間:
2015-2-27 17:05
auto DDNS update, 有点问题,要是Router 没有RebooT 一个月,No-ip 便会将Hostname suspended. 所有$noipnew!=$noipold,每一段时间还要Update Host Name的。
作者:
gfx86674
時間:
2015-2-28 02:01
本帖最後由 gfx86674 於 2015-2-28 02:05 編輯
回復
5#
yiucsw
noip免費用戶每個月本來就至少得上官網做登錄 一次,每個月期限前官網也會寄mail通知.
忘了被暫停只能說是個人的疏失,這點腳本無法做任何幫助.
或者乖乖成為noip付費會員,hostname就不會被無端暫停了,就這樣!
另外小弟編輯了2.0版本 ,需要的人可自行運用.
#===========no-ip資訊=============
:local pppoename1 "pppoe-out1"
:local noipuser "abc1234@gmail.com"
:local noippass "123456"
:local noiphost1 "abc1234.no-ip.org"
#==========================
:local publicip1 [/ip address get [find interface=$pppoename1] address]
:set publicip1 [:pick $publicip1 0 [:find $publicip1 "/"]]
:set publicip1 [:toip $publicip1]
:local noipold1 [:resolve $noiphost1]
:if ($publicip1!=$noipold1) \
do={:local url "/nic/update?hostname=$noiphost1&myip=$publicip1"
/tool fetch address=dynupdate.no-ip.com src-path=$url mode=http \
user=$noipuser password=$noippass dst-path=("ddns-noip")
:delay 1
:local filestr [/file get "ddns-noip" contents]
/file remove [/file find name="ddns-noip"]
:if ([:find $filestr "good"]="0"||[:find $filestr "nochg"]="0") \
do={:log warning ("更新no-ip地址: ".$publicip1)} \
else={:log error "更新no-ip失敗!!"}}
複製代碼
作者:
yiucsw
時間:
2015-3-5 20:09
想问一下为什么要改以下的公网地址?ppoe 不一定是公网地址。我家不是PPOE拨号的。
:local publicip1 [/ip address get [find interface=$pppoename1] address]
作者:
yiucsw
時間:
2015-3-5 20:52
:local noipnew [/ip cloud get public-address]
:global noipold
:global countnoip
我在你第一个Script 加了以下的 loop. 每30次Force 更新一次。 30X15分钟=450分钟=7.5小时。
:if ([:typeof $noipold]="nothing") do={:set noipold 0.0.0.0}
:if ([:typeof countnoip]="nothing") do={:set countnoip 0}
:if ($countnoip=30) do={:set noipold 0.0.0.0}
set $countnoip ($countnoip + 1)
作者:
gfx86674
時間:
2015-3-6 00:26
本帖最後由 gfx86674 於 2015-3-6 01:05 編輯
第一個腳本是將Public-ip設到DDNS ,但只能更新一組.
第二個腳本是將PPPoE-IP設到DDNS ,修改後可以一次更新兩組DDNS,或者是更多.
若ISP是用DHCP-Client IP給用戶 ,其實這與PPPoE沒有什不同.
差別只在名稱一個為PPPoE-OUT1 ,另一個則是Client-name罷了.
作者:
yiucsw
時間:
2015-3-7 10:34
谢谢。明白了。
现在的ppoe-out1 的public address是假的IP,也可能是在Router后边,所有我看到在网上大部分的Script是在Run Internet的checkrealIP script. 然后在将Checkip.rsc 的结果放到update Fetch.
以下是我改的update fetch.
:global countnoip
:if ([:typeof $noipold]="nothing") do={:set noipold 0.0.0.0}
:if ([:typeof countnoip]="nothing") do={:set countnoip 0}
:if ($countnoip>30) do={:set noipold 0.0.0.0
:set $countnoip 0}
set $countnoip ($countnoip + 1)
歡迎光臨 電訊茶室 (http://telecom-cafe.com/forum/)
Powered by Discuz! 7.2