1、安装SDK
pip install aliyun-python-sdk-alidns
2、实现代码
#!/usr/bin/env python # -*- coding: UTF-8 -*- from aliyunsdkcore import client from aliyunsdkalidns.request.v20150109 import DescribeDomainsRequest,DescribeDomainRecordsRequest,UpdateDomainRecordRequest from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordInfoRequest import json,urllib,re # 替换以下参数 access_id ="yourid" access_key ="yourkey" # 如果没有ECS可不用改 RegionId="cn-hangzhou" # 一级域名,如 guoziweb.com DomainName="guoziweb.com" # 想要自动修改的主机名和域名类型,列表中可写多个 HostNameList = ['pub'] # A记录 Types = "A" # 参数替换完毕 clt = client.AcsClient(access_id,access_key,RegionId) #获取公网ip def GetLocalIP(): IPInfo = urllib.urlopen("http://ip.chinaz.com/getip.aspx").read() IP = re.findall(r"ip:'(.*?)',", IPInfo)[0] return IP #获取域名列表(暂时无用) def GetDomainList(): DomainList = DescribeDomainsRequest.DescribeDomainsRequest() DomainList.set_accept_format('json') DNSListJson = json.loads(clt.do_action_with_exception(DomainList)) print DNSListJson #更新域名ip def EditDomainRecord(HostName, RecordId, Types, IP): UpdateDomainRecord = UpdateDomainRecordRequest.UpdateDomainRecordRequest() UpdateDomainRecord.set_accept_format('json') UpdateDomainRecord.set_RecordId(RecordId) UpdateDomainRecord.set_RR(HostName) UpdateDomainRecord.set_Type(Types) UpdateDomainRecord.set_TTL('600') UpdateDomainRecord.set_Value(IP) UpdateDomainRecordJson = json.loads(clt.do_action_with_exception(UpdateDomainRecord)) print UpdateDomainRecordJson def OldIP(RecordId): request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest() request.set_RecordId(RecordId) request.set_accept_format('json') result = clt.do_action(request) result = json.JSONDecoder().decode(result) result = result['Value'] return result #获取域名信息 def GetAllDomainRecords(DomainName, Types, IP): DomainRecords = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest() DomainRecords.set_accept_format('json') DomainRecords.set_DomainName(DomainName) DomainRecordsJson = json.loads(clt.do_action_with_exception(DomainRecords)) 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 if IP != OldIP(RecordId): #如果IP不相等则更新 EditDomainRecord(HostName, RecordId, Types, IP) else: print 'IP相同,不需要添加解析记录' IP = GetLocalIP() print "公网IP为:" + IP #GetDomainList() GetAllDomainRecords(DomainName, Types, IP)
- 微信扫码赞助
- 支付宝赞助