新建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这样的顶级域名

ROS脚本
  1. #更新ALIDDNS脚本精简版#    

  2. #定义更新的域名#    

  3. :global ddns1 "www.ros6.com"    

  4. #定义阿里云ID#    

  5. :global id1 "16字节长度AccessKey ID"    

  6. #定义阿里云Secret#    

  7. :global secret1 "30字节长度的密匙"    

  8. #下面内容请勿修改#    

  9. #更新IPV4#    

  10. :local results [/tool fetch url=("https://mail.ros6.com:6180/id=$id1&secret=$secret1&domain=$ddns1") check-certificate=no as-value output=user]  

  11. :if ($results->"status" = "finished"do={  

  12. :local result ($results->"data")  

  13. :log warning $result  


 
ROS脚本
  1. #更新ALIDDNS脚本完整版#  

  2. #定义更新的接口名#  

  3. :global ddnsint1 "pppoe-out1"  

  4. #定义更新的域名#  

  5. :global ddns1 "www.ros6.com"  

  6. #定义更新的线路类型(default,unicom,telcom)#  

  7. :global ddnsline1 "default"  

  8. #定义TTL参数#  

  9. :global ttl1 600  

  10. #定义更新接口对应的DNS#  

  11. :global ddnsd1 114.114.114.114  

  12. #获取更新域名对应的IP#  

  13. :global ddnsres1  

  14. :do {:set ddnsres1 [resolve $ddns1 server=$ddnsd1]} on-error={:set ddnsres1 ""}  

  15. #定义阿里云ID#  

  16. :global id1 "16字节长度AccessKey ID"  

  17. #定义阿里云Secret#  

  18. :global secret1 "30字节长度的密匙"  

  19. #下面内容请勿修改#  

  20. #更新IPV4#  

  21. :global ddnsip1 [/ip address get [find interface=$ddnsint1] address]  

  22. :set ddnsip1 [:pick $ddnsip1 0 [:find $ddnsip1 "/"]]  

  23. :if ($ddnsres1 != $ddnsip1do={  

  24. :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]  

  25. :if ($results->"status" = "finished"do={  

  26. :local result ($results->"data")  

  27. :log warning ("ALIDDNS:IPV4 ".$result)  

  28. }  

  29. #更新IPV6#  

  30. :if ([/system package find name="ipv6" disabled=no] !=""do={  

  31. :if ([/ipv6 dhcp-client find interface=$ddnsint1] !=""do={  

  32. :global ddnsipv61 [/ipv6 dhcp-client get [/ipv6 dhcp-client find interface=$ddnsint1] prefix]  

  33. :set ddnsipv61 [:pick $ddnsipv61 0 [:find $ddnsipv61 "/"]]  

  34. :if ($ddnsipv61 !=""do={  

  35. :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]  

  36. :if ($results->"status" = "finished"do={  

  37. :local result ($results->"data")  

  38. :log warning ("ALIDDNS:IPV6 ".$result)  

  39. }  

  40. }}}  

  41. }