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
|
import json import os import re import sys from datetime import datetime
from aliyunsdkalidns.request.v20150109 import UpdateDomainRecordRequest, DescribeDomainRecordsRequest, \ DescribeDomainRecordInfoRequest from aliyunsdkcore import client
access_key_id = "XXXXXXXXXXXX"
access_Key_secret = "XXXXXXXXXXXX"
account_id = "XXXXXXXX"
i_dont_know_record_id = 'no'
rc_domain = 'XXXXXX.XXXXX'
rc_rr = 'XXXXXXX'
rc_type = 'A'
rc_record_id = 'XXXXXXXXXX'
rc_ttl = '600'
rc_format = 'json'
def my_ip(): get_ip_method = os.popen('curl -s ip.cn | iconv -f utf-8 -t gbk') get_ip_responses = get_ip_method.readlines()[0] get_ip_pattern = re.compile(r'\d+\.\d+\.\d+\.\d+') get_ip_value = get_ip_pattern.findall(get_ip_responses)[0] return get_ip_value
def check_records(dns_domain): clt = client.AcsClient(access_key_id, access_Key_secret, 'cn-hangzhou') request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest() request.set_DomainName(dns_domain) request.set_accept_format(rc_format) result = clt.do_action(request) return result
def old_ip(): clt = client.AcsClient(access_key_id, access_Key_secret, 'cn-hangzhou') request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest() request.set_RecordId(rc_record_id) request.set_accept_format(rc_format) result = clt.do_action(request) result = json.JSONDecoder().decode(result) result = result['Value'] return result
def update_dns(dns_rr, dns_type, dns_value, dns_record_id, dns_ttl, dns_format): clt = client.AcsClient(access_key_id, access_Key_secret, 'cn-hangzhou') request = UpdateDomainRecordRequest.UpdateDomainRecordRequest() request.set_RR(dns_rr) request.set_Type(dns_type) request.set_Value(dns_value) request.set_RecordId(dns_record_id) request.set_TTL(dns_ttl) request.set_accept_format(dns_format) result = clt.do_action(request) return result
def write_to_file(): time_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') current_script_path = sys.path[7] print current_script_path log_file = current_script_path + '/' + 'aliyun_ddns_log.txt' write = open(log_file, 'a') write.write(time_now + ' ' + str(rc_value_old) + '------>' + str(rc_value) + '\n' ) write.close() return
if i_dont_know_record_id == 'yes': print check_records(rc_domain) elif i_dont_know_record_id == 'no': rc_value = my_ip() rc_value_old = old_ip() if rc_value_old == rc_value: print 'The specified value of parameter Value is the same as old' else: print update_dns(rc_rr, rc_type, rc_value, rc_record_id, rc_ttl, rc_format) write_to_file()
|