之前一直用f3322.net的域名解析,但是因为觉得它不够稳定,所以近期改用dnspo免费域名解析,为了更稳定地使用,我利用腾讯云SDK实现了ip地址动态更新
由于本人的opwrt不知道什么原因,在折腾了一翻后仍然无法正常安装gcc,而该机上已经安装好python编译环境(其实是懒得编译GCC),所以用的是python版SDK(链接在此:SDK 中心 - 腾讯云)(不用对API进行签名,可以少码点在字)。
安装python版本SDK有两种办法:1.安装pip 并 执行“pip install --upgrade tencentcloud-sdk-python”命令;2.从以上链接下载SDK后在指定目录解压或者直接在指定目录下用git clone下载,在目录内执行“python setup.py install”,然后安装curl、
apscheduler、ubus。
接下来开始写代码。思路是:在目录内创建一个用于保存IP的文本,并定时读取,得到的值与WAN口IP对比,如果相同,则不更新该值;如果不同则说明WAN口IP已经改变,保存新IP到文本,然后获取外网IP与WAN口IP对比,如果值相同,则说明拨号得到的IP是公网IP,对DNSPOD域名解析绑定的IP更新;如果不同,则输出信息。
写代码可以充分利用API在线调试取得相应的API请求代码块(链接在此:登录 - 腾讯云)放入自定义的函数中,然后编写主逻辑程序,调用函数,最后编写无参函数调用主逻辑程序,利用apscheduler实现定时执行。
过程:
在API EXPORER中左侧找到DNSPod->更新动态DNS记录->输入参数,点击Domain旁边的?得到执行该调用必须填写Domain、RecordId、RecordLine和Value
Domain就是您的主域名(去掉www) ,RecordId 要通过API调用取得,如果您要执行定时更新操作的域名解析是默认的,则RecordLine值为:“默认”,否则也要通过API调用取得。
找到DNSPod->获取域名的解析记录>点右边的查看文档,找到“3.输出参数”,点击“DomainList ”右边“类型” “Array of”下面的“RecordListItem”,在新页面查看记录列表元素,里面有我们想要的“RecordId”、“Value”和“Line”,说明这是我们需要的第一个API调用。