Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bda68c5

Browse files
authored
Create aliddns_ipv4&ipv6.py
1 parent 5734768 commit bda68c5

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

aliddns_ipv4&ipv6.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
from aliyunsdkcore.client import AcsClient
2+
from aliyunsdkcore.acs_exception.exceptions import ClientException
3+
from aliyunsdkcore.acs_exception.exceptions import ServerException
4+
from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest
5+
from aliyunsdkalidns.request.v20150109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequest
6+
import requests
7+
from urllib.request import urlopen
8+
import json
9+
10+
ipv4_flag = 1 # 是否开启ipv4 ddns解析,1为开启,0为关闭
11+
ipv6_flag = 1 # 是否开启ipv6 ddns解析,1为开启,0为关闭
12+
accessKeyId = "accessKeyId" # 将accessKeyId改成自己的accessKeyId
13+
accessSecret = "accessSecret" # 将accessSecret改成自己的accessSecret
14+
domain = "zeruns.tech" # 你的主域名
15+
name_ipv4 = "blog" # 要进行ipv4 ddns解析的子域名
16+
name_ipv6 = "ipv6.test" # 要进行ipv6 ddns解析的子域名
17+
18+
19+
client = AcsClient(accessKeyId, accessSecret, 'cn-hangzhou')
20+
21+
def update(RecordId, RR, Type, Value): # 修改域名解析记录
22+
from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest
23+
request = UpdateDomainRecordRequest()
24+
request.set_accept_format('json')
25+
request.set_RecordId(RecordId)
26+
request.set_RR(RR)
27+
request.set_Type(Type)
28+
request.set_Value(Value)
29+
response = client.do_action_with_exception(request)
30+
31+
32+
def add(DomainName, RR, Type, Value): # 添加新的域名解析记录
33+
from aliyunsdkalidns.request.v20150109.AddDomainRecordRequest import AddDomainRecordRequest
34+
request = AddDomainRecordRequest()
35+
request.set_accept_format('json')
36+
request.set_DomainName(DomainName)
37+
request.set_RR(RR) # https://blog.zeruns.tech
38+
request.set_Type(Type)
39+
request.set_Value(Value)
40+
response = client.do_action_with_exception(request)
41+
42+
43+
if ipv4_flag == 1:
44+
request = DescribeSubDomainRecordsRequest()
45+
request.set_accept_format('json')
46+
request.set_DomainName(domain)
47+
request.set_SubDomain(name_ipv4 + '.' + domain)
48+
response = client.do_action_with_exception(request) # 获取域名解析记录列表
49+
domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的
50+
51+
ip = urlopen('https://api-ipv4.ip.sb/ip').read() # 使用IP.SB的接口获取ipv4地址
52+
ipv4 = str(ip, encoding='utf-8')
53+
print("获取到IPv4地址:%s" % ipv4)
54+
55+
if domain_list['TotalCount'] == 0:
56+
add(domain, name_ipv4, "A", ipv4)
57+
print("新建域名解析成功")
58+
elif domain_list['TotalCount'] == 1:
59+
if domain_list['DomainRecords']['Record'][0]['Value'].strip() != ipv4.strip():
60+
update(domain_list['DomainRecords']['Record'][0]['RecordId'], name_ipv4, "A", ipv4)
61+
print("修改域名解析成功")
62+
else: # https://blog.zeruns.tech
63+
print("IPv4地址没变")
64+
elif domain_list['TotalCount'] > 1:
65+
from aliyunsdkalidns.request.v20150109.DeleteSubDomainRecordsRequest import DeleteSubDomainRecordsRequest
66+
request = DeleteSubDomainRecordsRequest()
67+
request.set_accept_format('json')
68+
request.set_DomainName(domain) # https://blog.zeruns.tech
69+
request.set_RR(name_ipv4)
70+
response = client.do_action_with_exception(request)
71+
add(domain, name_ipv4, "A", ipv4)
72+
print("修改域名解析成功")
73+
74+
print("本程序版权属于zeruns,博客:https://blog.zeruns.tech")
75+
76+
if ipv6_flag == 1:
77+
request = DescribeSubDomainRecordsRequest()
78+
request.set_accept_format('json')
79+
request.set_DomainName(domain)
80+
request.set_SubDomain(name_ipv6 + '.' + domain)
81+
response = client.do_action_with_exception(request) # 获取域名解析记录列表
82+
domain_list = json.loads(response) # 将返回的JSON数据转化为Python能识别的
83+
84+
ip = urlopen('https://api-ipv6.ip.sb/ip').read() # 使用IP.SB的接口获取ipv6地址
85+
ipv6 = str(ip, encoding='utf-8')
86+
print("获取到IPv6地址:%s" % ipv6)
87+
88+
if domain_list['TotalCount'] == 0:
89+
add(domain, name_ipv6, "AAAA", ipv6)
90+
print("新建域名解析成功")
91+
elif domain_list['TotalCount'] == 1:
92+
if domain_list['DomainRecords']['Record'][0]['Value'].strip() != ipv6.strip():
93+
update(domain_list['DomainRecords']['Record'][0]['RecordId'], name_ipv6, "AAAA", ipv6)
94+
print("修改域名解析成功")
95+
else: # https://blog.zeruns.tech
96+
print("IPv6地址没变")
97+
elif domain_list['TotalCount'] > 1:
98+
from aliyunsdkalidns.request.v20150109.DeleteSubDomainRecordsRequest import DeleteSubDomainRecordsRequest
99+
request = DeleteSubDomainRecordsRequest()
100+
request.set_accept_format('json')
101+
request.set_DomainName(domain)
102+
request.set_RR(name_ipv6) # https://blog.zeruns.tech
103+
response = client.do_action_with_exception(request)
104+
add(domain, name_ipv6, "AAAA", ipv6)
105+
print("修改域名解析成功")

0 commit comments

Comments
 (0)