Python脚本自动更新阿里云DNS解析记录指南
公网IP频繁变动时,可利用Python脚本自动同步域名解析记录。本文详细演示如何部署命令行工具、配置双端身份验证、执行A记录更新,并涵盖本机公网IP自动获取与常见API报错的排查方法。
环境准备与工具部署
第1步:安装运行依赖
使用 pip3 安装核心网络请求库及阿里云专用 SDK。指定 alidns 版本为 2.0.6 以保证基础功能的兼容性。
pip3 install requests
pip3 install aliyun-python-sdk-core-v3
pip3 install aliyun-python-sdk-alidns==2.0.6
第2步:拉取代码并注册命令
从源码仓库克隆项目,赋予执行权限后通过符号链接将其加入系统全局路径,便于随时调用。
git clone https://github.com/wangli2025/aliyunDnsUpdateRecord.git
cd aliyunDnsUpdateRecord
chmod +x main.py
sudo ln -s $(pwd)/main.py /usr/local/bin/aliyunDnsUpdateRecord
部署完成后,输入 aliyunDnsUpdateRecord --help 可查看完整的参数列表与使用说明。
$ aliyunDnsUpdateRecord --help
usage: aliyunDnsUpdateRecord [-h] [-c CONFIGPATH] [-d DOMAINNAME] [-r RR] [-t TYPE] [-v VALUE]
阿里云修改域名解析命令行工具
options:
-h, --help show this help message and exit
-c CONFIGPATH, --configPath CONFIGPATH
配置文件
-d DOMAINNAME, --DomainName DOMAINNAME
域名
-r RR, --RR RR 主机
-t TYPE, --Type TYPE 解析类型
-v VALUE, --Value VALUE
解析值
身份认证与参数配置
工具读取凭证的顺序为配置文件优先,环境变量次之。一旦成功加载配置文件,将忽略环境变量设置。
使用 JSON 配置文件
在脚本所在目录创建 .alidns.json(默认路径),填入对应的 AccessKey、Secret 及 Region ID。操作前建议导出当前解析备份,防止误覆盖影响业务。
{
"AliDNS_AccessKey_ID": "您的阿里云AccessKey ID",
"AliDNS_Access_Key_Secret": "您的AccessKey Secret",
"AliDNS_region_id": "区域标识,如cn-hangzhou"
}
使用环境变量
若偏好动态注入凭据,可直接导出对应变量:
export AliDNS_AccessKey_ID=您的阿里云AccessKey ID
export AliDNS_Access_Key_Secret=您的AccessKey Secret
export AliDNS_region_id=cn-hangzhou
关键参数说明:-d 为目标域名,-r 为主机记录(如 www),-t 为记录类型(常用 A 或 CNAME),-v 为待绑定的 IP 地址。若不传 -v,程序会自动探测本机出口公网 IP 并完成替换。
执行解析更新
第1步:执行基础更新指令
准备好密钥后,按格式传入域名、主机、类型和目标 IP 即可触发修改:
$ aliyunDnsUpdateRecord -d example.com -r www -t A -v 127.0.0.10
第2步:使用非默认配置或自动识别公网IP
当配置文件未放在当前目录时,需通过 -c 显式声明路径:
$ cat c.json
{
"AliDNS_AccessKey_ID": "您的阿里云AccessKey ID",
"AliDNS_Access_Key_Secret": "您的AccessKey Secret",
"AliDNS_region_id": "cn-hangzhou"
}
$ aliyunDnsUpdateRecord -c c.json -d example.com -r www -t A -v 127.0.0.10
若需将解析直接指向当前服务器所在的公网出口 IP,省略 -v 参数即可:
$ aliyunDnsUpdateRecord -d example.com -r www -t A
执行成功后,终端将返回类似如下提示:
解析修改成功 example.com www 127.0.0.10
此时登录阿里云控制台刷新 DNS 管理页面,即可核对记录是否已准确落盘。
常见报错与排查指引
脚本内置了基础的状态码捕获逻辑,遇到以下典型错误时可按对应方向处理:
- AccessKey 无效或缺失:终端打印
HTTP Status: 404 Error:InvalidAccessKeyId.NotFound。请核对密钥字符串是否完整复制,注意无多余空格,且该账号具有云解析 DNS 的使用权限。 - 域名不在托管列表:返回
Error:InvalidDomainName.NoExist。确认域名已实名认证并添加至当前阿里云账号的云解析产品实例中。 - RAM 授权不足:返回
HTTP Status: 403 Error:Forbidden.RAM User not authorized...。子账号需绑定系统策略AliyunDNSFullAccess,或根据自身最小权限原则创建包含alidns:UpdateDomainRecord等操作的自定义策略。 - 原记录不存在:提示
未找到该域名解析记录。尝试新增一条测试记录后再行切换,或检查-r前缀拼写(如 @、www、mail)是否与实际一致。
以上就是 Python 实现动态修改阿里云 DNS 域名解析的详细内容,更多关于 Python 自动化维护域名解析的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









