python 阿里云DNS解析作为DDNS使用
来源:互联网 发布:中经网数据库 编辑:程序博客网 时间:2024/05/18 17:55
# -*- coding: UTF-8 -*-import jsonimport osimport reimport sysfrom datetime import datetimefrom aliyunsdkalidns.request.v20150109 import UpdateDomainRecordRequest, DescribeDomainRecordsRequest, \ DescribeDomainRecordInfoRequest, AddDomainRecordRequestfrom aliyunsdkcore import client'''下载https://develop.aliyun.com/sdk/java?spm=5176.doc29772.416540.246.rjauTQ解压安装sudo python setup.py install#安装alidns python DSKpip install aliyun-python-sdk-alidnshttps://help.aliyun.com/document_detail/29772.html?spm=5176.doc29774.6.612.oNWaU3crontab -e定时10分钟执行*/10 * * * * /usr/bin/python2 /home/t7.pycrontab -l先创建记下record id'''# 请填写你的Access Key IDaccess_key_id = "yourid"# 请填写你的Access Key Secretaccess_Key_secret = "your"# 请填写你的账号IDaccount_id = "0000"# 如果选择yes,则运行程序后仅现实域名信息,并不会更新记录,用于获取解析记录ID。# 如果选择NO,则运行程序后不显示域名信息,仅更新记录i_dont_know_record_id = 'no'# 请填写你的一级域名rc_domain = 'xxx.xxx'# 请填写你的解析记录rc_rr = 'www'# 请填写你的记录类型,DDNS请填写A,表示A记录rc_type = 'A'# 请填写解析记录IDrc_record_id = 'yourid 'rc_record_RequestId = 'D4'# 请填写解析有效生存时间TTL,单位:秒rc_ttl = '600'# 请填写返还内容格式,json,xmlrc_format = 'json'def my_ip(): get_ip_method = os.popen('curl -s ip.cn') 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_valuedef 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) print result return resultdef old_ip(): clt = client.AcsClient(access_key_id, access_Key_secret, 'cn-hangzhou') request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest() #print result, "-------" request.set_RecordId(rc_record_id) request.set_accept_format(rc_format) #print result, "-------" result = clt.do_action(request) #print result, "-------" result = json.JSONDecoder().decode(result) print result result = result['Value'] return resultdef update_dns(dns_rr, dns_type, dns_value, dns_record_id, dns_ttl, dns_format): print 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) print request,"---" result = clt.do_action(request) print result return resultdef create_dns(rc_domain, 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 = AddDomainRecordRequest.AddDomainRecordRequest() request.set_DomainName(rc_domain) 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) print request result = clt.do_action(request) print result result = json.JSONDecoder().decode(result) print result print result['RequestId'], result['RecordId'] return resultdef write_to_file(): time_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S') #current_script_path = sys.argv[0] #print current_script_path # 绝对路径获取 current_script_path = os.path.abspath(sys.argv[0]) current_script_path = os.path.dirname(current_script_path) log_file = current_script_path + '/' + 'aliyun_ddns_log.txt' #print log_file write = open(log_file, 'a') write.write(time_now + ' ' + str(rc_value) + ' ' + str(rc_record_id)+ '\n') write.close() returnif __name__ == '__main__': current_script_path = sys.argv[0] print current_script_path,"---" rc_value = my_ip() print rc_value #create_dns(rc_domain, rc_rr, rc_type, rc_value, rc_record_id, rc_ttl, rc_format) rc_value_old = old_ip() print rc_value, rc_value_old if i_dont_know_record_id == 'yes': check_records(rc_domain) elif i_dont_know_record_id == 'no': #rc_value ='58.100.92.135' if rc_value_old == rc_value: print 'The specified value of parameter Value is the same as old' else: update_dns(rc_rr, rc_type, rc_value, rc_record_id, rc_ttl, rc_format) write_to_file()
0 0
- python 阿里云DNS解析作为DDNS使用
- Python平台下调用阿里云API参数实现DDNS功能
- 阿里云机器使用DNS轮询解析分散流量到多台机器
- DNS及DDNS
- dns 和 ddns
- DNS与DDNS
- Linux学习dns&ddns
- 云解析DNS使用教程
- 云解析DNS使用教程
- DNS正向解析,反向解析,双向解析,集群,远程更新,DDNS
- 使用dnsmasq作为dns服务器
- Python学习:DNS解析
- docker定时更新动态拨号IP到阿里云云解析,实现动态域名解析DDNS功能
- 什么是动态DNS(DDNS)
- 什么是动态DNS(DDNS)?
- DNS服务器及DDNS配置
- linux- dns和ddns服务
- dns的辅助和ddns
- android Asstes的用法总结
- Windows核心编程 第十七章 -内存映射文件(上)
- ReflectUitls类的编写和对反射机制的解析
- 线性神经网络模型与学习算法
- java项目中配置Log4j
- python 阿里云DNS解析作为DDNS使用
- MapReduce Shuffle原理 与 Spark Shuffle原理
- RxJava(新手推荐一)
- .net Core 自我学习随笔(二)——非 Visual Studio 下 MVC 的搭建方法
- 简单的利用数据库实现登录界面
- MIME类型介绍
- AfxGetApp(),this->GetSafeHwnd(),AfxGetMainWnd()->m_hWnd
- hdu 1242 Rescue
- hibernate中多对一映射删除