1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 利用python实现修改阿里云DNS值解析

利用python实现修改阿里云DNS值解析

时间:2018-11-05 19:04:53

相关推荐

利用python实现修改阿里云DNS值解析

Python代码

#!/usr/bin/env python3# -*- coding: utf-8 -*-import jsonimport yamlimport sysfrom aliyunsdkcore.client import AcsClientfrom aliyunsdkalidns.request.v0109.DescribeDomainRecordsRequest import DescribeDomainRecordsRequestfrom aliyunsdkalidns.request.v0109.UpdateDomainRecordRequest import UpdateDomainRecordRequestdef AliAccessKey(id,Secret,region):try:client = AcsClient(id, Secret, region)return clientexcept Exception as e:print("验证aliyun key失败")print(e)sys.exit(-1)def read_yaml(filename):try:yaml_file = open(filename,"rb")yaml_data = yaml.safe_load(yaml_file)yaml_file.close()return yaml_dataexcept Exception as e:print("读取配置文件错误")print(e)sys.exit(-1)def GetDNSRecordId(yaml_data,client,DomainName):try:request = DescribeDomainRecordsRequest()request.set_accept_format('json')request.set_DomainName(DomainName)response = client.do_action_with_exception(request)json_data = json.loads(str(response, encoding='utf-8'))for RecordId in json_data['DomainRecords']['Record']:if yaml_data['UserData']['RR'] == RecordId['RR']:return RecordId['RecordId']except Exception as e:print("获取RecordId失败")print(e)sys.exit(-1)def UpdateDomainRecord(client,yaml_data,RecordId):try:request = UpdateDomainRecordRequest()request.set_accept_format('json')if 'Auto_Lines' == yaml_data['UserData']['UpdateDomain']:DomainValue = sys.argv[1]else :DomainValue = yaml_data['UserData']['UpdateDomain']request.set_Value(DomainValue)request.set_Type(yaml_data['UserData']['DomainType'])request.set_RR(yaml_data['UserData']['RR'])request.set_RecordId(RecordId)response = client.do_action_with_exception(request)print("更新域名解析成功")print("域名:" + yaml_data['UserData']['DomainName'] + " 主机:" + yaml_data['UserData']['RR'] + " 记录类型:" + yaml_data['UserData']['DomainType'] + " 记录值:" + DomainValue)except Exception as e:print("更新域名解析失败")print(e)def main():yaml_data = read_yaml('conf/conf.yaml')client = AliAccessKey(yaml_data['AliyunData']['AccessKey_ID'],yaml_data['AliyunData']['Access_Key_Secret'],yaml_data['AliyunData']['region_id'])RecordId = GetDNSRecordId(yaml_data,client,yaml_data['UserData']['DomainName'])UpdateDomainRecord(client,yaml_data,RecordId)if __name__ == "__main__" :main()'''遇到问题没人解答?小编创建了一个Python学习交流QQ群:85766 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''

安装依赖

pip3 install pyyamlpip3 install aliyun-python-sdk-core-v3pip3 install aliyun-python-sdk-alidns==2.0.6

配置文件介绍

所在路径: ./conf/conf.yaml

'''遇到问题没人解答?小编创建了一个Python学习交流QQ群:85766 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!'''# 阿里云更新域名解析文档# /document_detail/29776.html# /document_detail/29774.html# 阿里云信息,从阿里云获取填写即可AliyunData:# 阿里云的AccessKey_ID , Access_Key_Secret , region_id# 获取方法,参考文档: /knowledge_detail/38738.htmlAccessKey_ID: 'AccessKey'Access_Key_Secret: 'Secret'region_id: "cn-hangzhou"# DNS解析信息UserData:# 需要修改的域名DomainName: '需要修改的域名'# 解析的主机RR: '需要修改的主机'# 解析的记录DomainType: '需要修改的记录类型'# 解析更新的值,如果填写 Auto_Lines ,则从命令行获取UpdateDomain: 'Auto_Lines'#UpdateDomain: '127.0.0.1'

根据配置文档来解析

需要将配置文件中的UpdateDomain 修改为需要修改解析的值,执行main.py即可

>python main.py更新域名解析成功域名:****** 主机:****** 记录类型:A 记录值:192.168.1.100>

根据用户命令行指定来解析

需要将配置文件中的UpdateDomain 修改为Auto_Lines,执行main.py 需要解析的地址 即可

>python main.py 192.168.1.101更新域名解析成功域名:****** 主机:****** 记录类型:A 记录值:192.168.1.101>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。