AliDDNSBash
阿里云域名解析动态更新(DDNS)的 Shell 脚本
Install / Use
/learn @h46incon/AliDDNSBashREADME
AliDDNSBash
介绍
如果使用了阿里云(万网)的域名解析服务的话,那么就可以通过它提供的API,使用HTTP访问动态修改解析地址,以实现DDNS的功能。阿里云也提供了一些语言的SDK,但是并没有Shell版本的。
所以只能自力更生,写了一个Shell脚本来访问API。
注意:此脚本只实现了调用修改域名解析记录和获取解析记录列表的API的功能,并没有完整实现整个SDK。但是因为脚本已经实现了API的签名机制,所以很容易实现其他API的调用。
本脚本在OpenWRT中测试通过。(也就是在这种场合会连个Python都跑不了,而一定要使用Shell…)
参考:阿里云解析API文档
功能
- 能在 OpenWRT 上原生的 ash 中执行。
- 仅在当前IP地址和域名解析设置不同时,发起更新请求。(本机当前IP地址通过3322.org提供的API 进行查询,域名的解析设置通过API:DescribeDomainRecordInfo 查询。)
- 还没在脚本中分析API执行的结果,只是单纯打印出来。
使用方法
- 安装依赖
首先需要一个shell(目标是支持所有符合 POSIX 标准的 shell,在 ash 和 bash 上测试通过)。
然后安装curl,openssl-util。这些软件包在OpenWRT下可直接使用 opkg 命令安装。
- 修改脚本的
setting代码段,其中DomainRecordId不清楚的话暂时不用修改,DNSServer修改为你在万网上使用的DNS服务器。如:
AccessKeyId="MyID"
AccessKeySec="MySecret"
DomainRecordId="00000"
DomainRR="www"
DomainName="example.com"
DomainType="A"
DNSServer="dns9.hichina.com"
- 如果不清楚DomainRecordId的话,修改
main函数,在里面调用describe_record,如:
main()
{
describe_record
#update_record
}
然后执行这个脚本。如果没问题的话,就能获取到域名的所有解析记录的列表了:
{"PageNumber":1,"TotalCount":1,"PageSize":1,"RequestId":"0000","DomainRecords":
{"Record":[{"RR":"www","Status":"ENABLE","Value":"8.8.8.8",
"RecordId":"21332133","Type":"A","DomainName":"example.com",
"Locked":false,"Line":"default","TTL":"600"},]}
}HttpCode:200
上面的结果中,RecordId为21332133。得到结果后再修改DomainRecordId为正确的值。
- 修改
main函数:
main()
{
#describe_record
update_record
}
执行脚本即可。脚本会在本机IP地址和当前域名解析设置不同的时候调用API更新设置。
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
