花9元钱在阿里云上云注册一个“.top”的顶级域名,再利用下面的代码定时更新你家路由器的IP,这样就实现了DDNS的效果了。
下面Python代码中的AcsClient()、request.set_RecordId(“17741030***760”)这两个函数的参数请在https://help.aliyun.com/document_detail/53090.html 上查看。
Code: [全选] [Expand/Collapse]
-
#!/usr/bin/env python
-
#coding=utf-8
-
import json
-
import urllib
-
import datetime
-
from aliyunsdkcore.client import AcsClient
-
from aliyunsdkcore.acs_exception.exceptions import ClientException
-
from aliyunsdkcore.acs_exception.exceptions import ServerException
-
from aliyunsdkalidns.request.v20150109.DescribeDomainRecordInfoRequest import DescribeDomainRecordInfoRequest
-
from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
-
-
client = AcsClient(‘LTAIjOE53h******fI’, ‘JlvkmaCPek3SqqY*******GQbd8Zp’, ‘cn-hangzhou’)
-
-
request = DescribeDomainRecordInfoRequest()
-
request.set_accept_format(‘json’)
-
-
request.set_RecordId("17741030***760")
-
-
response = client.do_action_with_exception(request)
-
response = json.loads(response.decode())
-
old_ip = response[‘Value’]
-
-
new_ip = urllib.urlopen("http://ip.42.pl/raw").read()
-
-
if old_ip != new_ip:
-
request = UpdateDomainRecordRequest()
-
request.set_accept_format(‘json’)
-
request.set_Value(new_ip)
-
request.set_Type("A")
-
request.set_RR("nas")
-
request.set_RecordId("17741030***760")
-
response = client.do_action_with_exception(request)
-
print datetime.datetime.now(),‘ ‘, old_ip, ‘ => ‘, new_ip
-
else :
-
print datetime.datetime.now(),‘ IP has not changed.’, new_ip
原文作者: admin | 查看原帖
在群晖的计划任务中,定时执行下面的命令,就可定时查询更新aliyun的DNS解析:
今天又抽了点时间将IP更新程序优化了一下,调用方法: python aliyundns.py http://www.atoo.top,代码如下:
还需要安装支持库:
代码: 全选
群晖中安装python3、pip3和阿里云Python SDK
安装步骤:
1、从群晖“套件中心”中安装python3应用;
2、通过SSH登录群晖后台,并通过“sudo -i”命令进入root用户角色;
3、进入python3应用目录”root@DiskStation:/var/packages/py3k/target/usr/local/bin#“
4、运行下列命令安装pip3
代码: 全选