|
|
简单的dynv6和dynu双域名更新,有哪位大神能加上接口状态检测,接口未就绪循环重试,同一时间值允许一个脚本运行
- # ========================
- # 基础参数配置区
- # ========================
- # ------------------------
- # Dynv6 专用配置
- # ------------------------
- :local dynv6Hostname "你的dynv6域名"
- :local dynv6Token "你的dynv6令牌"
- :local dynv6ApiUrl "https://dynv6.com/api/update"
- # ------------------------
- # Dynu 专用配置
- # ------------------------
- :local dynuHostname "你的dynu域名"
- :local dynuPassword "你的dynu密钥"
- :local dynuApiUrl "https://api.dynu.com/nic/update"
- # ========================
- # 公共变量区(IP获取)
- # ========================
- :local ifaceName "你的pppoe接口"
- :local currentIP [/ip address get [/ip address find dynamic=yes interface=$ifaceName] address]
- :set currentIP [:pick $currentIP 0 [:find $currentIP "/"]]
- # ========================
- # DDNS更新执行区
- # ========================
- # ------------------------
- # Dynv6 更新流程
- # ------------------------
- #:log info "开始Dynv6更新流程..."
- :local dynv6RequestUrl ($dynv6ApiUrl . "?hostname=" . $dynv6Hostname . "&token=" . $dynv6Token . "&ipv4=" . $currentIP)
- :local dynv6Response [/tool/fetch url=$dynv6RequestUrl mode=https as-value output=user]
- :if ([:len $dynv6Response] > 0) do={
- :if ($dynv6Response->"status" = "finished") do={
- :local dynv6StatusCode ($dynv6Response->"data")
- :if ($dynv6StatusCode = "addresses updated") do={
- :log info "Dynv6域名:$dynv6Hostname 更新成功 IP: $currentIP"
- } else={
- :if ($dynv6StatusCode = "addresses unchanged") do={
- :log info "Dynv6地址未变更:$currentIP 域名:$dynv6Hostname IP"
- } else={
- :log warning "Dynv6异常响应:$dynv6StatusCode"
- }
- }
- } else={
- :log error "Dynv6请求失败:$($dynv6Response->"error")"
- }
- } else={
- :log error "Dynv6服务无响应"
- }
- # ------------------------
- # Dynu 更新流程
- # ------------------------
- #:log info "开始Dynu更新流程..."
- :local dynuRequestUrl ($dynuApiUrl . "?hostname=" . $dynuHostname . "&myip=" . $currentIP . "&password=" . $dynuPassword)
- :local dynuResponse [/tool/fetch url=$dynuRequestUrl mode=https as-value output=user]
- :if ([:len $dynuResponse] > 0) do={
- :if ($dynuResponse->"status" = "finished") do={
- :local dynuStatusCode ($dynuResponse->"data")
- :if ($dynuStatusCode = "good $currentIP") do={
- :log info "Dynu域名:“$dynuHostname 更新成功 IP: $currentIP"
- } else={
- :if ($dynuStatusCode = "nochg") do={
- :log info "Dynu地址未变更:$currentIP 域名:$dynuHostname IP"
- } else={
- :log warning "Dynu异常响应:$dynuStatusCode"
- }
- }
- } else={
- :log error "Dynu请求失败:$($dynuResponse->"error")"
- }
- } else={
- :log error "Dynu服务无响应"
- }
- # ========================
- # 执行结束
- # ========================
复制代码
|
|