|
这里罗列的DDNS更新脚本主要针对changeip提供的服务,搭建的ROS2.9.27运行也有一年多了,一直没用DDNS来管理,几天前运行脚本就已放到ROS里,发现没起作用,原来是由于changeip服务器的原因没更新,这两天发现可以正常更新.
另外,加了DDNS更新后,由于我用的三线ADSL,发现必须有一条ADSL拨号后要勾选"Add Default Route”,否则无法通过DDNS连线.勾选后,路由表前面的标识会变为DA.
以下分别是ROS 2.9系列,3.20系列,4.0系列的chageip动态域名更新脚本.(2.9系列在2.9.27下测试通过)
ROS 2.9.X系列 (脚本中的*1也可以替换为你在chageip网站申请的二级域名)- :log info "DDNS: Begin"
- :global ddns-user "用户名ID"
- :global ddns-pass "密码"
- :global ddns-host "*1"
- :global ddns-interface "pppoe-out1"
- :global ddns-ip [ /ip address get [/ip address find interface=$ddns-interface] address ]
- :if ([ :typeof $ddns-lastip ] = nil ) do={ :global ddns-lastip 0.0.0.0/0 }
- :if ([ :typeof $ddns-ip ] = nil ) do={
- :log info ("DDNS: No ip address present on " . $ddns-interface . ", please check.")
- } else={
- :if ($ddns-ip != $ddns-lastip) do={
- :log info "DDNS: Sending UPDATE!"
- :log info [ /tool dns-update name=$ddns-host address=[:pick $ddns-ip 0 [:find $ddns-ip "/"] ] key-name=$ddns-user key=$ddns-pass ]
- :global ddns-lastip $ddns-ip
- } else={
- :log info "DDNS: No change"
- }
- }
- :log info "DDNS: End"
复制代码 ROS 3.20系列- :local u "用户名"
- :local p "密码"
- :local n "你申请的二级域名"
- :local nowip [/ip address get [/ip address find dynamic=yes interface=pppoe-out1] address]
- :local nowip [:pick $nowip 0 [:find $nowip "/"]]
- :local dnsip [:resolve ($n)]
- :if (($dnsip) != (0.0.0.0)) do={
- :if (($dnsip) !=$nowip) do={
- /tool dns-update name=$n address=$nowip key-name=$u key=$p
- :log info ("DDNS IS UPDATE :" . $nowip)
- }
- }
复制代码 ROS 4.X系列- :global ddnsuser "YourChangeIPUserID"
- :global ddnspass "PASSWORD"
- :global ddnshost "MyRouterHostname.example.org"
- :global ddnsinterface "ether1"
- :global ddnssystem ("mt-" . [/system package get [/system package find name=system] version] )
- :global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface] address ]
- :global ddnslastip
- :if ([:len [/interface find name=$ddnsinterface]] = 0 ) do={ :log info "DDNS: No interface named $ddnsinterface, please check configuration." }
- :if ([ :typeof $ddnslastip ] = "nothing" ) do={ :global ddnslastip 0.0.0.0/0 }
- :if ([ :typeof $ddnsip ] = "nothing" ) do={
- :log info ("DDNS: No ip address present on " . $ddnsinterface . ", please check.")
- } else={
- :if ($ddnsip != $ddnslastip) do={
- :log info "DDNS: Sending UPDATE!"
- :log info [ :put [/tool dns-update name=$ddnshost address=[:pick $ddnsip 0 [:find $ddnsip "/"] ] key-name=$ddnsuser key=$ddnspass ] ]
- :global ddnslastip $ddnsip
- } else={
- :log info "DDNS: No changes necessary."
- }
复制代码 |
|