ROS几个版本系列的动态域名更新脚本

ROS几个版本系列的动态域名更新脚本

这里罗列的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网站申请的二级域名)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
: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系列

1
2
3
4
5
6
7
8
9
10
11
12
: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系列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
: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.”
}

也可以前往官网参考:http://wiki.mikrotik.com/wiki/Dynamic_DNS_Update_Script_for_ChangeIP.com