Python脚本自动更新阿里云DNS解析记录指南

星野
星野
发布时间:2026-10-11| 1人浏览过
原创

公网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 自动化维护域名解析的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。