国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

香港云服务器
服務器之家 - 服務器技術 - 云服務器 - 如何通過阿里云實現動態域名解析DDNS的方法

如何通過阿里云實現動態域名解析DDNS的方法

2020-07-25 21:15Jsoner 云服務器

這篇文章主要介紹了如何通過阿里云實現動態域名解析DDNS的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

該腳本的代碼大部分是參考自阿里云的官方幫助文檔。
1, 腳本語言使用的是python, 我個人只是了解python,沒有太深入的知識功底
2, 腳本代碼我會盡量詳細地添加注釋說明,有問題歡迎留言交流,但回復可能不會那么及時。

前置條件

1、域名是在阿里云購買的 (我的域名本身就是阿里云買的,其他的域名我沒有測試過)
2、地址必須是公網地址,不然加了解析也沒有用 (這個不用多加解釋了)

安裝阿里云SDK

需要安裝三個SDK庫,一個是阿里云核心SDK庫,一個是阿里云域名SDK庫,一個是DNS庫
阿里云核心SDK庫:pip install aliyun-python-sdk-core
阿里云域名SDK庫:pip install aliyun-python-sdk-domain
阿里云DNSSDK庫:pip install aliyun-python-sdk-alidns
說明:
1, 目前官方文檔上說的是需要安裝前兩個SDK庫,但我實測確定還需要第三個庫!
2, 如果你使用的是ubuntu系統,并且同時有python2/python3和pip2/pip3,安裝時前面的命令請寫清楚版本,特別是pip。 我的系統pip默認是2.x,使用pip install xxx 命令安裝的庫無效,使用 pip3 install xxx 才成功(如果知道如何隨意切換python和pip版本,請留言告知,感謝)。

腳本的具體功能

1, 獲取外網ip地址
2,獲取域名解析記錄
3,新增域名解析記錄
3,更新域名解析記錄
4,刪除域名解析記錄 (并不建議將該功能添加在實際腳本中)
5,批量操作,如果記錄不存在則添加記錄,存在則更新記錄

腳本代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/usr/bin/env python
#coding=utf-8
 
# 加載核心SDK
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
 
# 加載獲取 、 新增、 更新、 刪除接口
from aliyunsdkalidns.request.v20150109 import DescribeSubDomainRecordsRequest, AddDomainRecordRequest, UpdateDomainRecordRequest, DeleteDomainRecordRequest
 
# 加載內置模塊
import json,urllib
 
# AccessKey 和 Secret 建議使用 RAM 子賬戶的 KEY 和 SECRET 增加安全性
ID = 'xxxxxxx'
SECRET = 'xxxxxx'
 
# 地區節點 可選地區取決于你的阿里云帳號等級,普通用戶只有四個,分別是杭州、上海、深圳、河北,具體參考官網API
regionId = 'cn-hangzhou'
 
# 配置認證信息
client = AcsClient(ID, SECRET, regionId)
 
# 設置主域名
DomainName = 'example.com'
 
# 子域名列表 列表參數可根據實際需求增加或減少值
SubDomainList = ['a', 'b', 'c']
 
# 獲取外網IP  三個地址返回的ip地址格式各不相同,3322 的是最純凈的格式, 備選1為 json格式 備選2 為curl方式獲取 兩個備選地址都需要對獲取值作進一步處理才能使用
def getIp():
  # 備選地址: 1, http://pv.sohu.com/cityjson?ie=utf-8  2,curl -L tool.lu/ip
  with urllib.request.urlopen('http://www.3322.org/dyndns/getip') as response:
    html = response.read()
    ip = str(html, encoding='utf-8').replace("\n", "")
  return ip
 
# 查詢記錄
def getDomainInfo(SubDomain):
  request = DescribeSubDomainRecordsRequest.DescribeSubDomainRecordsRequest()
  request.set_accept_format('json')
 
  # 設置要查詢的記錄類型為 A記錄  官網支持A / CNAME / MX / AAAA / TXT / NS / SRV / CAA / URL隱性(顯性)轉發 如果有需要可將該值配置為參數傳入
  request.set_Type("A")
 
  # 指定查記的域名 格式為 'test.example.com'
  request.set_SubDomain(SubDomain)
 
  response = client.do_action_with_exception(request)
  response = str(response, encoding='utf-8')
 
  # 將獲取到的記錄轉換成json對象并返回
  return json.loads(response)
 
# 新增記錄 (默認都設置為A記錄,通過配置set_Type可設置為其他記錄)
def addDomainRecord(client,value,rr,domainname):
  request = AddDomainRecordRequest.AddDomainRecordRequest()
  request.set_accept_format('json')
 
  # request.set_Priority('1') # MX 記錄時的必選參數
  request.set_TTL('600')    # 可選值的范圍取決于你的阿里云賬戶等級,免費版為 600 - 86400 單位為秒
  request.set_Value(value)   # 新增的 ip 地址
  request.set_Type('A')    # 記錄類型
  request.set_RR(rr)      # 子域名名稱
  request.set_DomainName(domainname) #主域名
 
  # 獲取記錄信息,返回信息中包含 TotalCount 字段,表示獲取到的記錄條數 0 表示沒有記錄, 其他數字為多少表示有多少條相同記錄,正常有記錄的值應該為1,如果值大于1則應該檢查是不是重復添加了相同的記錄
  response = client.do_action_with_exception(request)
  response = str(response, encoding='utf-8')
  relsult = json.loads(response)
  return relsult
 
# 更新記錄
def updateDomainRecord(client,value,rr,record_id):
  request = UpdateDomainRecordRequest.UpdateDomainRecordRequest()
  request.set_accept_format('json')
 
  # request.set_Priority('1')
  request.set_TTL('600')
  request.set_Value(value) # 新的ip地址
  request.set_Type('A')
  request.set_RR(rr)
  request.set_RecordId(record_id) # 更新記錄需要指定 record_id ,該字段為記錄的唯一標識,可以在獲取方法的返回信息中得到該字段的值
 
  response = client.do_action_with_exception(request)
  response = str(response, encoding='utf-8')
  return response
 
# 刪除記錄
def delDomainRecord(client,subdomain):
  info = getDomainInfo(subdomain)
  if info['TotalCount'] == 0:
    print('沒有相關的記錄信息,刪除失?。?#39;)
  elif info["TotalCount"] == 1:
    print('準備刪除記錄')
    request = DeleteDomainRecordRequest.DeleteDomainRecordRequest()
    request.set_accept_format('json')
 
    record_id = info["DomainRecords"]["Record"][0]["RecordId"]
    request.set_RecordId(record_id) # 刪除記錄需要指定 record_id ,該字段為記錄的唯一標識,可以在獲取方法的返回信息中得到該字段的值
    result = client.do_action_with_exception(request)
    print('刪除成功,返回信息:')
    print(result)
  else:
    # 正常不應該有多條相同的記錄,如果存在這種情況,應該手動去網站檢查核實是否有操作失誤
    print("存在多個相同子域名解析記錄值,請核查后再操作!")
 
# 有記錄則更新,沒有記錄則新增
def setDomainRecord(client,value,rr,domainname):
  info = getDomainInfo(rr + '.' + domainname)
  if info['TotalCount'] == 0:
    print('準備添加新記錄')
    add_result = addDomainRecord(client,value,rr,domainname)
    print(add_result)
  elif info["TotalCount"] == 1:
    print('準備更新已有記錄')
    record_id = info["DomainRecords"]["Record"][0]["RecordId"]
    cur_ip = getIp()
    old_ip = info["DomainRecords"]["Record"][0]["Value"]
    if cur_ip == old_ip:
      print ("新ip與原ip相同,無法更新!")
    else:
      update_result = updateDomainRecord(client,value,rr,record_id)
      print('更新成功,返回信息:')
      print(update_result)
  else:
    # 正常不應該有多條相同的記錄,如果存在這種情況,應該手動去網站檢查核實是否有操作失誤
    print("存在多個相同子域名解析記錄值,請核查刪除后再操作!")
 
 
IP = getIp()
 
# 循環子域名列表進行批量操作
for x in SubDomainList:
  setDomainRecord(client,IP,x,DomainName)
 
# 刪除記錄測試
# delDomainRecord(client,'b.jsoner.com')
 
# 新增或更新記錄測試
# setDomainRecord(client,'192.168.3.222','a',DomainName)
 
# 獲取記錄測試
# print (getDomainInfo(DomainName, 'y'))
 
# 批量獲取記錄測試
# for x in SubDomainList:
#   print (getDomainInfo(DomainName, x))
 
# 獲取外網ip地址測試
# print ('(' + getIp() + ')')

可以將以上腳本保存為文件之后,通過定時任務,來實現定期自動更新ip地址,具體如何添加定時任務,系統不同,可能方法也不盡相同,這里就不多說明了。

說明

1,建議不要將刪除記錄添加進實際使用的腳本當中。
2,相同記錄是同一個子域名的多條記錄,比如 test.example.com。
腳本并沒有驗證記錄類型,所以同一子域名下的不同類型的記錄也會認為是相同記錄,比如:
有兩條記錄分別是 test.examlpe.com 的 A 記錄 和 test.examlpe.com 的 AAAA 記錄,會被認為是兩條相同的 test.example.com 記錄
可以通過判斷獲取記錄返回的 record_id 來實現精確匹配記錄,但我沒有這樣的需求,也就沒有花時間去寫。

到此這篇關于如何通過阿里云實現動態域名解析DDNS的方法的文章就介紹到這了,更多相關阿里云動態域名解析DDNS內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/waylen/archive/2020/07/25/13375373.html

延伸 · 閱讀

精彩推薦
1075
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 亚洲一区二区三区高清 | av成人免费 | 淫片在线 | 欧美一区三区 | 久久精品1区 | 欧美日韩成人一区二区 | 国产精品久久综合 | 国产视频一二三区 | 在线亚洲一区 | 秋霞精品 | 久久99深爱久久99精品 | 欧美一级特黄aaaaaaa在线观看 | 亚洲乱码国产乱码精品精的特点 | 久久久久久国产精品高清 | 日本福利视频 | 四虎欧美 | 国产黄a一级 | 亚洲精品久久久蜜桃 | 日韩欧美精品一区二区三区 | 欧美成人激情视频 | 亚洲精品乱码 | 日韩欧美一区二区三区免费观看 | 久久亚洲精品裙底抄底 | 草草精品视频 | 日韩中文字幕在线播放 | 色婷婷久久一区二区三区麻豆 | 日韩欧美一区二区三区免费观看 | 精品一二三区 | 看黄色片网站 | 国产三级一区二区三区 | 日本亚洲欧美 | 狠狠干狠狠干 | 免费三级黄色片 | 狠狠操狠狠操 | 亚洲一区视频 | 夜夜春精品视频高清69式 | 午夜激情视频在线观看 | 国产精品无码久久久久 | 亚洲人成网站999久久久综合 | chinese国产一区二区 | 小川阿佐美88av在线播放 |