群晖域名解析 DDNS ——阿里云 DNS 脚本
背景
之前,为了远程访问群晖应用,且为了不使用弱智的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)]
有两个问题你要注意一下:
- 如果你的群晖没有安装
python3
,则使用python
命令运行; - 在运行脚本之前,你要确保已经安装阿里云的依赖包。
pip3 install aliyun-python-sdk-core
pip3 install aliyun-python-sdk-alidns
结语
ok,这就是本次分享的全部内容,有什么疑问可以联系邮箱ialex.cube@gmail.com
,我会在空余的时候与你一起讨论,阿里嘎多。
群晖域名解析 DDNS ——阿里云 DNS 脚本相关推荐
- 群晖/Linux挂载阿里云盘实现Emby播放,打造属于自己的家庭影院!
现目前硬盘的价格还是很贵,现阿里云盘各种玩法逐渐上线,今天就带大家玩一下挂载阿里云盘实现Emby播放. 准备 由于挂载阿里云盘的实现依赖于搭建阿里云盘webdav协议,所以没有搭建的童鞋可以看看下面的 ...
- 群晖自动将阿里云盘里面的内容下载到本地(全网独家)
全网独家 更高效的群晖自动将阿里云盘里面的内容下载到本地 工具选取Clouddrive2+Webdav server+Cloudsync CloudDrive2设置 Webdav server设置 C ...
- 群晖NAS配置阿里云盘同步
群晖NAS配置阿里云盘同步 注册阿里云盘已经有蛮长时间,内测就开始在使用,目前阿里云盘不限速,速度快容量也不小. 而且目前有大神提供了docker镜像webdav-aliyundriver,比较方便把 ...
- 群晖Docker配置阿里云国际域名DDNS实现外网访问
本文同步发布于个人博客 前置条件 域名是在阿里云购买的,或者域名托管在阿里云 (我的域名本身就是阿里云买的,其他的域名我没有测试过) 地址必须是公网地址,不然加了解析也没有用 (这个不用多加解释了), ...
- 群晖docker实现阿里云动态公网域名解析ddns服务
日常生活中,一般家庭用户宽带使用的都是内网ip,如果需要在外网就是远程使用,需要将家庭ip向电信部门申请变更为公网ip,通常情况下,我们获得的都是动态公网ip,这种ip每隔一段时间都会自动变化,这样如 ...
- 群晖NAS同步阿里云盘数据
安装阿里云盘webdav 由于群晖官方套件中心没有直接同步阿里云盘的套件,需要安装第三方套件,安装方法如下: 添加第三方套件社群 以管理员登录NAS,打开套件中心--设置--套件来源--新增--&qu ...
- 群晖NAS同步阿里云盘,亲妈级保姆教程,2022年8月4日亲测有效
没用nas之前照片是保存到本地电脑硬盘上的,有100多G的视频与照片,2019年,发现很多照片只显示一半或直接无法打开,导致少了很多美好回忆.所以组了个群晖6,群晖6有一点不太好,相册不支持HEIC格 ...
- 群晖NAS同步阿里云盘最新方法2023-04
之前按照网上的方法,成功同步了阿里云盘到群晖里,但最近发现阿里云盘的同步断了,群晖里的docker容器一直连接中,连接不上,按照以前的方法,更新了refresh_token.改参数名字之类的试了都不行 ...
- 群晖NAS与阿里云盘同步的方法
同步方法:通过在 docker 中安装 aliyundrive-webdav 实现与阿里云盘同步. 下载和安装 aliyundrive-webdav 在 docker 的注册表中搜素 aliyun,选 ...
最新文章
- 电路实验1-电容充放电
- opc客户端_组态王作为OPC服务器的使用介绍,欢迎读者阅读
- 天猫精灵怎么和台式计算机链接,天猫精灵怎么连接电脑
- oracle control file文件 详解
- 手机模拟位置实现精准位置营销效果分析
- linux的ping工具,用linux下的tcping工具测试已禁ping服务器延迟
- eclipse发布rest_在Eclipse中高效运行HTTP / REST集成测试
- 移动应用广告盈利-KeyMob移动广告聚合平台
- Java并发编程中的join()与interrupt()函数
- Ubuntu命令方式安装中文语言包
- 你看,那个人好像一条狗啊~30岁以上的程序员该何去何从?
- 用EasyBoot轻松做启动光盘
- python如何提取word文档某个段落所有内容(包括段落、表格、图片一并提取)
- 大数据BI解决方案:医疗行业的数据治理
- Oracle 19c遇到ORA-XXXX:????的问题的解决方案
- Arranging Heaps
- 《Android深入透析》之Android事件分发机制
- 【系统架构设计师】第四章 计算机网络
- NDS开发环境的建立
- 微博上流传的BAT对应级别和工资
热门文章
- 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用
- 递归与递归方程T(N)=aT(N/b)+O(N^d)
- 下载 | 数学分析八讲(修订版)
- Python判断空集
- python字符串两个冒号_Python 数组字符串 冒号 用法
- 银行手机APP安全评估报告【转载】
- 磁性微型机器人通过结肠翻筋斗以输送药物
- Python高级--逻辑回归、KNN回归比较
- Permute mac版 v3.7.2 文件格式转换器
- 基于麻雀搜索算法的同步优化特征选择 - 附代码