電訊茶室's Archiver

gfx86674 發表於 2015-1-12 00:55

自動更新no-ip ddns Script!!

[i=s] 本帖最後由 gfx86674 於 2015-2-16 17:30 編輯 [/i]

小弟個人debug並優化的no-ip自動更新Script ,有興趣的朋友可試試{:5_207:}[code]#===========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失敗!!"}}[/code]成功更新log:
[img]http://i.imgur.com/Lbkujn7.png[/img]

yiucsw 發表於 2015-1-13 17:17

谢谢,刚改用你的Script。不用其他Check Real Ip 的网站。

gfx86674 發表於 2015-2-16 01:19

[i=s] 本帖最後由 gfx86674 於 2015-2-16 16:56 編輯 [/i]

[b]回復 [url=http://www.telecom-cafe.com/forum/redirect.php?goto=findpost&pid=40168&ptid=6515]2#[/url] [i]yiucsw[/i] [/b]
注意更新v6.27後 ,cloud名稱有變,所以腳本也要跟著變!
更新前:
[color=Blue]:if ([/ip cloud get enabled]=no) do={/ip cloud set enabled=yes}[/color]

更新後:
[color=Red]:if ([/ip cloud get ddns-enabled]=no) do={/ip cloud set ddns-enabled=yes}[/color]

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

[i=s] 本帖最後由 gfx86674 於 2015-2-28 02:05 編輯 [/i]

[b]回復 [url=http://www.telecom-cafe.com/forum/redirect.php?goto=findpost&pid=40735&ptid=6515]5#[/url] [i]yiucsw[/i] [/b]
noip免費用戶每個月本來就至少得上官網做登錄 一次,每個月期限前官網也會寄mail通知.
忘了被暫停只能說是個人的疏失,這點腳本無法做任何幫助.

或者乖乖成為noip付費會員,hostname就不會被無端暫停了,就這樣!

另外小弟編輯了2.0版本 ,需要的人可自行運用.[code]#===========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失敗!!"}}
[/code]

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

[i=s] 本帖最後由 gfx86674 於 2015-3-6 01:05 編輯 [/i]

第一個腳本是將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)

頁: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.