ros通过script自动更新腾讯云dns

ros配置脚本

System->Scripts中新增脚本,脚本需有read/write/test三个权限。


脚本内容如下:

#PPPoE
:local pppoe “pppoe接口名”
#DNSPOD token
:local token “token-id,token”
#域名
:local domain “域名”
#域名主机名
:local subdomain “子域名”
#domain
:local dname ($subdomain.”.”.$domain)
#获取pppoe拨号ip
:local ipaddr [/ip address get [/ip address find interface=$pppoe] address]
:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]
#获取域名列表
:local record [/tool fetch url=”https://dnsapi.cn/Record.List” http-data=”login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_type=A” as-value output=user]
#获取id和ip
:set record ($record->”data”)
:set record [:pick $record [:find $record “\”records\”:”] [:len $record]]
:local recordid [:pick $record ([:find $record “\”id\”:\””]+6) [:find $record “\”,\”ttl”]]
:local recordip [:pick $record ([:find $record “\”value\”:\””]+9) [:find $record “\”,\”en”]]
#更新ip地址
:if ($recordip!=$ipaddr) do={
/tool fetch url=”https://dnsapi.cn/Record.Ddns” http-data=”login_token=$token&format=json&domain=$domain&sub_domain=$subdomain&record_id=$recordid&record_line_id=0&value=$ipaddr”
:log info (“[“.$dname.”] ip update”)
} else={
:log info (“[“.$dname.”] ip not update”)
}

修改pppoe接口名/id/token/域名/子域名,并保证该子域名在腾讯云上已经存在且解析类型是A,如不存在则更新失败不会主动创建子域名。

完成后回到Script List中选中脚本,Run Script测试,如果成功会更新腾讯云解析记录,并在Files中产生Record.Ddns文件。



ros配置自动更新

System->Scheduler中新增计划任务,Start Time是计划任务生效时间,Interval是间隔时间,需要具备read/write/test权限。

腾讯云免费账号dns刷新时间是十分钟,所有腾讯云账号都有api调用次数限制,间隔时间不能小于限制,前者不会更新,后者会封号。

On Event中使用下列语句调用script

/system script run script名称


每隔指定时间会检查ip变化情况,有变化会更新到腾讯云,如无变化则不更新。

本文链接地址: https://danteng.org/ros-update-qcloud-domains-by-scripts/