ROS的DDNS腳本


ROS使用ADSL上網時,每次撥號IP都會改變,導致外網訪問ROS服務器失敗,目前最常見的解決方案是使用DDNS這種動態域名工具,在撥號后(IP發生變化后)通知DDNS服務器更新IP,最終使用DDNS服務商提供的靜態域名即可永久訪問這台服務器。ROS官方僅支持changeip,但通過其它方法也可以實現支持花生殼,測試通過的腳本如下:

一、國外changeip的腳本,修改自changeip官方網站:

 1 # Define User Variables
 2 :global ddnsuser "user"
 3 :global ddnspass "password"
 4 :global ddnshost "xxxx.onmypc.org"
 5 :global ddnsinterface "changkuan"
 6 
 7 # Define Global Variables
 8 :global ddnsip
 9 :global ddnslastip
10 
11 :if ([ :typeof $ddnslastip ] = nothing ) do={ :global ddnslastip "0" }
12 
13 # Grab the current IP address on that interface.
14 :global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]
15 :log info $ddnsip
16 # Did we get an IP address to compare?
17 :if ([ :typeof $ddnsip ] = nil ) do={
18    :log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
19 } else={
20 
21   :if ($ddnsip != $ddnslastip) do={
22 
23     :log info "DDNS: Sending UPDATE!"
24     :log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
25     :global ddnslastip $ddnsip
26 
27   } else={ 
28     :log info "DDNS: No update required."
29   }
30 
31 }
32 
33 # End of script

二、國內花生殼的腳本,官方提供的腳本每次都會更新,根據上述changip腳本修改之,實現IP變化后才更新:

 1 local server "http://ddns.oray.com"
 2 local domain "xxxx.oicp.net"
 3 local users "user"
 4 local paswd "password"
 5 local adslinterface "changkuan"
 6 local ipaddr
 7 :global lastipaddr
 8 
 9 set ipaddr [/ip address get [/ip address find interface=$adslinterface] address]
10 :if ([ :typeof $ipaddr ] = nil ) do={
11    :log info ("ORAY: No ip address present on " . $adslinterface . ", please check.")
12 } else={
13    set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]   
14    :log info $ipaddr
15    :if ($ipaddr != $lastipaddr) do={
16     local par "/ph/update?&hostname=$domain&myip=$ipaddr"
17     :log info "ORAY: Sending UPDATE!"
18     :log info [:put [ /tool fetch url=($server . $par) mode=http user=$users password=$paswd ] ]
19     :global lastipaddr $ipaddr
20 
21   } else={ 
22     :log info "ORAY: No update required."
23   }
24 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM