ROS通过aliyun域名解析实现DDNS脚本
优化获取地址方式,以及设置地址相同时不触发解析请求,避免频繁多余请求接口。
:local id "key"
:local secret "secret"
:local domain "your.domain.com"
:global GIPV4
:global GIPV6
# 定义拨号接口名称
:local interfaceName "pppoe-out1"
# 获取接口的IP地址
:local ipAddress [/ip address get [/ip address find interface=$interfaceName] address]
# 检查是否获取到IP地址
:if ($ipAddress != "") do={
:set ipAddress [:pick $ipAddress 0 ([len $ipAddress] -3)]
:if ($ipAddress != $GIPV4) do={
:global GIPV4 $ipAddress
:log info ("IP Address of $interfaceName: " . $ipAddress)
:local result [/tool fetch url="https://www.zhisg.com/route.php/ddns/ali/set\?id=$id&secret=$secret&domain=$domain&ip=$ipAddress" as-value output=user];
:log info $result;
}
} else={
:log error ("Failed to get IP address for $interfaceName")
}
# 定义IPV6地址接口名称
:local ipv6Interface "bridge1"
# 定义IPV6前缀地址池
:local ipv6Pool "TELEv6"
:local ipv6Addr [/ipv6 address get [/ipv6 address find interface=$ipv6Interface from-pool=$ipv6Pool] address ]
:local ipv6Prefix [ /ipv6 pool get [/ipv6 pool find name=$ipv6Pool] prefix ]
# 检查是否获取到IP地址
:if ($ipv6Addr != "") do={
:set ipv6Addr [:pick $ipv6Addr 0 ([len $ipv6Addr] -3)]
:if ($ipv6Addr != $GIPV6) do={
:global GIPV6 $ipv6Addr
:log info ("IPv6 Address of $ipv6Interface: " . $ipv6Addr)
:log info ("IPv6 Prefix of $ipv6Pool: " . $ipv6Prefix)
:local result [/tool fetch url="https://www.zhisg.com/route.php/ddns/ali/set\?id=$id&secret=$secret&domain=$domain&ip=$ipv6Addr&type=AAAA" as-value output=user];
:log info $result;
}
} else={
:log error ("Failed to get IPv6 address for $ipv6Interface")
}
:log info "DDNS FINISHED"