一般公司本地網絡基本都是動態的公網IP,IP不定時的改變,偶爾在本地搭建測試環境或做其他操作就很麻煩,拉專線的話一般公司也舍不得
,所以這邊通過腳本自動定時修改指定域名解析到最新獲取到的本地IP
注意事項:
#功能:獲取本地動態公網IP ,調用阿里云域名接口,直接修改域名綁定的ip地址 ,后期可結合nginx代理
#注意:二級域名需先創建
#該腳本支持python2,pyhon3
#如果二級域名已經存在了對應的IP地址,執行時會報錯,定時執行腳本時可忽略
#報錯信息:aliyunsdkcore.acs_exception.exceptions.ServerException: HTTP Status: 400 Error:DomainRecordDuplicate The DNS record already exists. RequestID: 9BF44B92-5CE3-4CE7-A947-3BFDEA42E785
環境:
python 2/3 #一般linux都自帶了
賦腳本:ddns.py
# 創建的 AccessKey #阿里云個人中心->accesskeysID="XX個人賬戶的XX"Secret="XX個人賬戶的XX"# 默認 --不修改RegionId="cn-hangzhou"# 你的域名 DomainName="域名如a.com"# 你想解析的二級域名,是一個列表,可以寫多個#HostNameList = ['test','hello', 'world']HostNameList = ['test']# 默認Types = "A"clt = client.AcsClient(ID,Secret,RegionId)#######################################################################################print (clt)# 動態獲取當前公司對外的公網 IPdef GetLocalIP(): # IPInfo = urllib.urlopen("http://www.trackip.net/").read() # IP = re.findall(r"ip:'(.*?)',", IPInfo)[0] # return IP#bak1 url='http://members.3322.org/dyndns/getip' url = 'http://www.trackip.net/' r = requests.get(url) #print (r) txt = r.text IP = txt[txt.find('title')+6:txt.find('/title')-1] return IP # 更新域名 IPdef EditDomainRecord(HostName, RecordId, Types, IP): UpdateDomainRecord = UpdateDomainRecordRequest.UpdateDomainRecordRequest() UpdateDomainRecord.t_accept_format('json') UpdateDomainRecord.t_RecordId(RecordId) UpdateDomainRecord.t_RR(HostName) UpdateDomainRecord.t_Type(Types) UpdateDomainRecord.t_TTL('600') UpdateDomainRecord.t_Value(IP) UpdateDomainRecordJson = json.loads(clt.do_action_with_exception(UpdateDomainRecord))# print UpdateDomainRecordJson # 獲取域名信息def GetAllDomainRecords(DomainName, Types, IP): DomainRecords = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest() DomainRecords.t_accept_format('json') DomainRecords.t_DomainName(DomainName) DomainRecordsJson = json.loads(clt.do_action_with_exception(DomainRecords)) # print DomainRecordsJson['DomainRecords']['Record'] for HostName in HostNameList: for x in DomainRecordsJson['DomainRecords']['Record']: RR = x['RR'] Type = x['Type'] if RR == HostName and Type == Types: RecordId = x['RecordId'] # print RecordId EditDomainRecord(HostName, RecordId, Types, IP) IP = GetLocalIP()#print (IP)GetAllDomainRecords(DomainName, Types, IP)
#執行下腳本
python ddns.py
#設置定時執行
#每5分鐘執行一次
*/5 * * * * /usr/bin/python ddns.py
沒啥大的問題,這邊就不做截圖,有興趣的話可以嘗試下,個人覺得還是比較實用的
本文發布于:2023-02-28 21:07:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167772706899708.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:3322動態域名(3322動態域名官網).doc
本文 PDF 下載地址:3322動態域名(3322動態域名官網).pdf
| 留言與評論(共有 0 條評論) |