新建ROS的ALIDDNS脚本更新项目
服务语言环境:golang
ROS的ALIDDNS脚本更新:
1.可对接阿里云的DDNS进行更新。
2.一个脚本可以支持IPV4和IPV6的DDNS更新。
3.检测子域名不存在时自动创建。
4.支持域名使用V4+V6双栈,2个IP共用一个域名。
5.支持更新不同线路的记录值。
6.支持自定义TTL记录值。
7.支持接口状态回显,方便调试错误。
使用条件:
1.必须在阿里云开通AccessKey功能,获取AccessKey ID和密匙。
2.必须将域名托管到阿里云DNS。
3.也兼容其他系统使用get提交。(id必填,secret必填,domain必填,IP选填,line选填)
4.支持123.ros6.com这样的2级域名,不支持123.456.ros6.com这样的更多级域名,也不支持更新ros6.com这样的顶级域名。
#更新ALIDDNS脚本精简版#
#定义更新的域名#
:global ddns1 "www.ros6.com"
#定义阿里云ID#
:global id1 "16字节长度AccessKey ID"
#定义阿里云Secret#
:global secret1 "30字节长度的密匙"
#下面内容请勿修改#
#更新IPV4#
:local results [/tool fetch url=("https://mail.ros6.com:6180/id=$id1&secret=$secret1&domain=$ddns1") check-certificate=no as-value output=user]
:if ($results->"status" = "finished") do={
:local result ($results->"data")
:log warning $result
}
#更新ALIDDNS脚本完整版#
#定义更新的接口名#
:global ddnsint1 "pppoe-out1"
#定义更新的域名#
:global ddns1 "www.ros6.com"
#定义更新的线路类型(default,unicom,telcom)#
:global ddnsline1 "default"
#定义TTL参数#
:global ttl1 600
#定义更新接口对应的DNS#
:global ddnsd1 114.114.114.114
#获取更新域名对应的IP#
:global ddnsres1
:do {:set ddnsres1 [resolve $ddns1 server=$ddnsd1]} on-error={:set ddnsres1 ""}
#定义阿里云ID#
:global id1 "16字节长度AccessKey ID"
#定义阿里云Secret#
:global secret1 "30字节长度的密匙"
#下面内容请勿修改#
#更新IPV4#
:global ddnsip1 [/ip address get [find interface=$ddnsint1] address]
:set ddnsip1 [:pick $ddnsip1 0 [:find $ddnsip1 "/"]]
:if ($ddnsres1 != $ddnsip1) do={
:local results [/tool fetch url=("https://mail.ros6.com:6180/id=$id1&secret=$secret1&domain=$ddns1&ip=$ddnsip1&line=$ddnsline1&ttl=$ttl1") check-certificate=no as-value output=user]
:if ($results->"status" = "finished") do={
:local result ($results->"data")
:log warning ("ALIDDNS:IPV4 ".$result)
}
#更新IPV6#
:if ([/system package find name="ipv6" disabled=no] !="") do={
:if ([/ipv6 dhcp-client find interface=$ddnsint1] !="") do={
:global ddnsipv61 [/ipv6 dhcp-client get [/ipv6 dhcp-client find interface=$ddnsint1] prefix]
:set ddnsipv61 [:pick $ddnsipv61 0 [:find $ddnsipv61 "/"]]
:if ($ddnsipv61 !="") do={
:local results [/tool fetch url=("https://mail.ros6.com:6180/id=$id1&secret=$secret1&domain=$ddns1&ip=$ddnsipv61&line=$ddnsline1&ttl=$ttl1") check-certificate=no as-value output=user]
:if ($results->"status" = "finished") do={
:local result ($results->"data")
:log warning ("ALIDDNS:IPV6 ".$result)
}
}}}
}
留言评论
暂无留言