###程序执行完需要较长时间,请耐心等待,不要反复执行,建议放在PPP模板里ON-UP使用### ###定义DNSPOD的TOKEN### :global mytoken "xxxxx,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ###定义要更新的IPV6域名### :global mydomains6p "ipv6.ros6.com" ###定义自己的需更新的拨号接口### :global myint "pppoe-out1" ###定义要绑定的设备MAC### :global pmac "12:34:56:78:90:ab" ###以下内容请勿更改### :global myipv6 [/ipv6 dhcp-client get [find interface=$myint status=bound] prefix] :set myipv6 [:pick $myipv6 0 [:find $myipv6 "/"]] ###获取设备V6后缀### :global pv6 "" :global pv6l :if ([:len $pv6l] <8) do={ :do {:set pv6l [/ipv6 neighbor get [find mac-address=$pmac address~"^fe80::"] address]} on-error={:if ([:len $pv6l] <8) do={:log error "没有找到对应MAC的IPV6地址,正在进行循环获取,请勿反复执行。"}} :while ([:len $pv6l] <8) do={ :do {:set pv6l [/ipv6 neighbor get [find mac-address=$pmac address~"^fe80::"] address]} on-error={} :delay 15s} } :set pv6 [:pick $pv6l 6 [:len $pv6l]] :set pv6 ([:pick $myipv6 0 ([:len $myipv6] -1)].$pv6) ###开始提交DDNS更新### :log error "DNSPOD脚本执行IPV6辅助更新开始" :global mydomain61p [:pick $mydomains6p ([:find $mydomains6p "."] +1) [:len $mydomains6p]] :global mydomain62p [:pick $mydomains6p 0 [:find $mydomains6p "."]] :do [/tool fetch url="https://dnsapi.cn/Record.List" http-data="login_token=$mytoken&format=json&domain=$mydomain61p&sub_domain=$mydomain62p"] :delay 5s :global reprec [/file get [find name="Record.List"] contents] :if ([:len [:find $reprec "u7a7a"]] >0) do={ /file remove [find name="Record.List"] :log error "DNSPOD因为没有对应子域名,尝试自己NEW一个。" :do [/tool fetch url="https://dnsapi.cn/Record.Create" http-data="login_token=$mytoken&format=json&domain=$mydomain61p&sub_domain=$mydomain62p&value=$pv6&record_type=AAAA&record_line=%e9%bb%98%e8%ae%a4" keep-result=no] :delay 5s :do [/tool fetch url="https://dnsapi.cn/Record.List" http-data="login_token=$mytoken&format=json&domain=$mydomain61p&sub_domain=$mydomain62p"] :delay 5s :global reprec [/file get [find name="Record.List"] contents]} :if ([:len [:find $reprec "u6210"]] >0) do={ :global dnspodf [/file get [find name="Record.List"] contents] :global fdend [:find $dnspodf ("\"".$mydomain62p."\"")] :global fdinfo [:pick $dnspodf 0 $fdend] :while ([:len [:find $fdinfo "{"]] > 0) do={ :global fdinfo [:pick $fdinfo ([:find $fdinfo "{"] +1) [:len $fdinfo]]} :global fdinfo [:pick $fdinfo 6 [:len $fdinfo]] :global fdinfo [:pick $fdinfo 0 [:find $fdinfo "\","]] :global recordid $fdinfo /file remove [find name="Record.List"] :global pv6 :if ([:len [:find $dnspodf $pv6]] >0) do={ :log error ("DNSPOD放弃更新,IPV6没有变化。") } else={ :do [/tool fetch url="https://dnsapi.cn/Record.Modify" http-data="login_token=$mytoken&format=json&domain=$mydomain61p&record_id=$recordid&sub_domain=$mydomain62p&value=$pv6&record_type=AAAA&record_line=%e9%bb%98%e8%ae%a4"] :delay 5s :global reprec [/file get [find name="Record.Modify"] contents] /file remove [find name="Record.Modify"] :if ([:len [:find $reprec "u6210"]] >0) do={ :log error ("DNSPOD更新IPV6成功。当前IPV6为:".pv6) } else={ :log error "DNSPOD更新IPV6失败" }}} :log error "DNSPOD脚本执行IPV6更新结束"