在西部数码West.cn上通过 API 实现 IPv6 的 DDNS动态域名解析更新核心逻辑是编写脚本获取当前服务器的 IPv6 地址并调用西部数码的 DNS API 将该地址更新到指定的域名解析记录中。了解西部数码 API 接口西部数码主要使用V2 API进行 DNS 管理。你需要关注的两个关键接口是1. 查询当前解析记录 (GetRecord)核心逻辑获取当前 IPv6 读取上次保存的 IPv6 相同 → 不更新 不同 → 调用西部数码 API 保存新 IPv6下面是完整版。importsubprocessimportrequestsimportreimportos# # 配置# DOMAINexample.com# 完整子域名HOSTNAMEhome.example.com# 西部数码 域名ApiKeyAPI_DOMAIN_KEY你的ApiKey# 网卡名称INTERFACEenp2s0# 保存上次IPLAST_IP_FILE/tmp/west_ddns_ipv6.txt# # 获取IPv6# defget_ipv6():cmd[ip,-6,addr,show,INTERFACE]outputsubprocess.check_output(cmd,encodingutf-8)matchesre.findall(rinet6 ([0-9a-fA-F:])/64 scope global,output)ifnotmatches:returnNoneforipinmatches:# 排除本地链路地址ifip.startswith(fe80):continuereturnipreturnNone# # 读取旧IP# defload_last_ip():ifnotos.path.exists(LAST_IP_FILE):returnNonewithopen(LAST_IP_FILE,r)asf:returnf.read().strip()# # 保存IP# defsave_last_ip(ip):withopen(LAST_IP_FILE,w)asf:f.write(ip)# # 更新DNS# defupdate_ddns(ipv6):urlhttps://api.west.cn/API/v2/domain/dns/params{act:dnsrec.update,domain:DOMAIN,apidomainkey:API_DOMAIN_KEY,hostname:HOSTNAME,record_value:ipv6}responserequests.get(url,paramsparams,timeout20)print(状态码:,response.status_code)print(response.text)ifresponse.status_code200:save_last_ip(ipv6)print(IPv6已保存)# # 主程序# if__name____main__:ipv6get_ipv6()ifnotipv6:print(未找到IPv6)exit(1)print(当前IPv6:,ipv6)last_ipload_last_ip()print(上次IPv6:,last_ip)# IP没变化ifipv6last_ip:print(IPv6未变化无需更新)exit(0)print(IPv6已变化开始更新DDNS)update_ddns(ipv6)开机自动运行推荐最稳的是systemd创建sudo nano /etc/systemd/system/ddns.service内容[Unit] DescriptionWest DDNS IPv6 [Service] ExecStart/usr/bin/python3 /home/ubuntu/ddns/ddns.py WorkingDirectory/home/ubuntu/ddns Restartalways [Install] WantedBymulti-user.target启动sudo systemctl daemon-reload sudo systemctl enable ddns sudo systemctl start ddns查看systemctl status ddns