背景

之前,为了远程访问群晖应用,且为了不使用弱智的ip访问模式,在阿里云上买了域名,将自己的公网ip绑定到该域名上。但是呢,由于我使用了路由器拨号,且设置了每周一凌晨重启路由器,保证路由器的性能。因此,每次当路由器重启拨号时,电信都会重新为路由器分配一个新的公网ip,这就导致不得不在阿里云上更新域名绑定的ip。之前因为缺乏基本的网络知识,在网上看了一些博客,使用了博客上提供的脚本来自动更新阿里云上的ip。但是,在使用过程中可能由于脚本的编写问题(没有仔细看脚本,脚本使用php编写),只能更新www前缀的记录值,无法更新@前缀记录值,导致体验十分不好(意思是不够完美哈哈哈)。

今天早晨!我的群晖又无故断开公网了!我十分生气!现在我更强了,也更快了,更是务实的行动派!我决定自己写个定制的脚本来解决这个问题。

解决方案

当着手去研究该问题时,发现事情比我想象的要简单很多。阿里云在产品使用文档中提供了相应的api接口,在文档中详细地说明了使用方法,并且提供了多种语言的SDK,甚至还提供了示例。因此,我简单阅读了一下文档,很快就有了解决思路。

阿里云api文档

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sZo0ihZS-1666584077179)(https://cdn.jsdelivr.net/gh/ColorlessCube/images@main/16350440598761635044059869.png)]

获取 access key

由于域名是在你的阿里云账户中购买的,为了获取更改你的账号信息的权限,首先需要获取access_key_id以及access_key。登录阿里云,点击右上角的头像,如图所示,点击AccessKey管理,跟着指示获取很简单就可以获取。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRNMQsXT-1666584077183)(https://cdn.jsdelivr.net/gh/ColorlessCube/images@main/16350443766121635044376605.png)]

脚本

ok,假设你已经获取了access_key_id以及access_key,下面就可以根据阿里云的api文档完成脚本的编写工作了。

import jsonfrom aliyunsdkcore.client import AcsClient
from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest# 将你的access_key信息填写好
access_key_id = '*******************'
access_secret = '*******************'
domains = ['colorlesscube.cn']# 获取本机的ip地址
def get_ip():import requestsreturn requests.get('https://ifconfig.me/ip', timeout=1).text.strip()# 根据access_key生成AcsClient对象
# 用于发请求,获取、更改你的账户信息
def get_acs_client():return AcsClient(access_key_id, access_secret, 'cn-hangzhou')# 首先获取你阿里云已有的域名解析值信息
def get_domain_records(domain):client = get_acs_client()request = DescribeDomainRecordsRequest()request.set_accept_format('json')request.set_DomainName(domain)response = client.do_action_with_exception(request)return json.loads(response)# 更新你的域名解析值信息,即更改ip
def update_domain_records(info, domain):client = get_acs_client()request = UpdateDomainRecordRequest()ip = get_ip()records = info['DomainRecords']['Record']for record in records:if record.get('Type') == 'A' and record.get('DomainName') == domain:request.set_accept_format('json')request.set_RecordId(record.get('RecordId'))request.set_RR(record.get('RR'))request.set_Type(record.get('Type'))request.set_Value(ip)try:response = client.do_action_with_exception(request)print(json.loads(response))except Exception as e:print(e)if __name__ == '__main__':for domain in domains:records = get_domain_records(domain)update_domain_records(records, domain)

群晖设置

将脚本上传到群晖上,并在任务计划中添加脚本执行命令。

python3 /volume3/homes/alex/Drive/Document/scripts/python/ddns.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RF37BEFY-1666584077184)(https://cdn.jsdelivr.net/gh/ColorlessCube/images@main/16350457100761635045710067.png)]

有两个问题你要注意一下:

  1. 如果你的群晖没有安装python3,则使用python命令运行;
  2. 在运行脚本之前,你要确保已经安装阿里云的依赖包。
pip3 install aliyun-python-sdk-core
pip3 install aliyun-python-sdk-alidns

结语

ok,这就是本次分享的全部内容,有什么疑问可以联系邮箱ialex.cube@gmail.com,我会在空余的时候与你一起讨论,阿里嘎多。

群晖域名解析 DDNS ——阿里云 DNS 脚本相关推荐

  1. 群晖/Linux挂载阿里云盘实现Emby播放,打造属于自己的家庭影院!

    现目前硬盘的价格还是很贵,现阿里云盘各种玩法逐渐上线,今天就带大家玩一下挂载阿里云盘实现Emby播放. 准备 由于挂载阿里云盘的实现依赖于搭建阿里云盘webdav协议,所以没有搭建的童鞋可以看看下面的 ...

  2. 群晖自动将阿里云盘里面的内容下载到本地(全网独家)

    全网独家 更高效的群晖自动将阿里云盘里面的内容下载到本地 工具选取Clouddrive2+Webdav server+Cloudsync CloudDrive2设置 Webdav server设置 C ...

  3. 群晖NAS配置阿里云盘同步

    群晖NAS配置阿里云盘同步 注册阿里云盘已经有蛮长时间,内测就开始在使用,目前阿里云盘不限速,速度快容量也不小. 而且目前有大神提供了docker镜像webdav-aliyundriver,比较方便把 ...

  4. 群晖Docker配置阿里云国际域名DDNS实现外网访问

    本文同步发布于个人博客 前置条件 域名是在阿里云购买的,或者域名托管在阿里云 (我的域名本身就是阿里云买的,其他的域名我没有测试过) 地址必须是公网地址,不然加了解析也没有用 (这个不用多加解释了), ...

  5. 群晖docker实现阿里云动态公网域名解析ddns服务

    日常生活中,一般家庭用户宽带使用的都是内网ip,如果需要在外网就是远程使用,需要将家庭ip向电信部门申请变更为公网ip,通常情况下,我们获得的都是动态公网ip,这种ip每隔一段时间都会自动变化,这样如 ...

  6. 群晖NAS同步阿里云盘数据

    安装阿里云盘webdav 由于群晖官方套件中心没有直接同步阿里云盘的套件,需要安装第三方套件,安装方法如下: 添加第三方套件社群 以管理员登录NAS,打开套件中心--设置--套件来源--新增--&qu ...

  7. 群晖NAS同步阿里云盘,亲妈级保姆教程,2022年8月4日亲测有效

    没用nas之前照片是保存到本地电脑硬盘上的,有100多G的视频与照片,2019年,发现很多照片只显示一半或直接无法打开,导致少了很多美好回忆.所以组了个群晖6,群晖6有一点不太好,相册不支持HEIC格 ...

  8. 群晖NAS同步阿里云盘最新方法2023-04

    之前按照网上的方法,成功同步了阿里云盘到群晖里,但最近发现阿里云盘的同步断了,群晖里的docker容器一直连接中,连接不上,按照以前的方法,更新了refresh_token.改参数名字之类的试了都不行 ...

  9. 群晖NAS与阿里云盘同步的方法

    同步方法:通过在 docker 中安装 aliyundrive-webdav 实现与阿里云盘同步. 下载和安装 aliyundrive-webdav 在 docker 的注册表中搜素 aliyun,选 ...

最新文章

  1. 电路实验1-电容充放电
  2. opc客户端_组态王作为OPC服务器的使用介绍,欢迎读者阅读
  3. 天猫精灵怎么和台式计算机链接,天猫精灵怎么连接电脑
  4. oracle control file文件 详解
  5. 手机模拟位置实现精准位置营销效果分析
  6. linux的ping工具,用linux下的tcping工具测试已禁ping服务器延迟
  7. eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试
  8. 移动应用广告盈利-KeyMob移动广告聚合平台
  9. Java并发编程中的join()与interrupt()函数
  10. Ubuntu命令方式安装中文语言包
  11. 你看,那个人好像一条狗啊~30岁以上的程序员该何去何从?
  12. 用EasyBoot轻松做启动光盘
  13. python如何提取word文档某个段落所有内容(包括段落、表格、图片一并提取)
  14. 大数据BI解决方案:医疗行业的数据治理
  15. Oracle 19c遇到ORA-XXXX:????的问题的解决方案
  16. Arranging Heaps
  17. 《Android深入透析》之Android事件分发机制
  18. 【系统架构设计师】第四章 计算机网络
  19. NDS开发环境的建立
  20. 微博上流传的BAT对应级别和工资

热门文章

  1. 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用
  2. 递归与递归方程T(N)=aT(N/b)+O(N^d)
  3. 下载 | 数学分析八讲(修订版)
  4. Python判断空集
  5. python字符串两个冒号_Python 数组字符串 冒号 用法
  6. 银行手机APP安全评估报告【转载】
  7. 磁性微型机器人通过结肠翻筋斗以输送药物
  8. Python高级--逻辑回归、KNN回归比较
  9. Permute mac版 v3.7.2 文件格式转换器
  10. 基于麻雀搜索算法的同步优化特征选择 - 附代码