# 安装模块
#pip install aliyun-python-sdk-core
#pip install aliyun-python-sdk-alidns
#pip install requests
# 代码:
#!/usr/bin/env python
#coding=utf-8
import sys
import json
import requests
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest
from aliyunsdkalidns.request.v20150109 import AddDomainRecordRequest
def getAliyunDnsRecord(client,record_type,domain_name,sub_name):
try:
request = DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
request.set_PageSize(99)
request.set_PageNumber(1)
request.set_action_name("DescribeDomainRecords")
request.set_DomainName(domain_name)
request.set_RRKeyWord(sub_name)
request.set_TypeKeyWord(record_type)
r = client.do_action_with_exception(request)
return json.loads(r.decode('utf-8'))
except Exception as e:
#print(e)
print "0"
def addDomainRecord(client,record_type,value,rr,domainname):
try:
request = AddDomainRecordRequest.AddDomainRecordRequest()
request.set_accept_format('json')
request.set_TTL('600')
request.set_Value(value)
request.set_Type(record_type)
request.set_RR(rr)
request.set_DomainName(domainname)
response = client.do_action_with_exception(request)
relsult = json.loads(response)
return relsult
except Exception as e:
#print(e)
print "0"
#读取参数
accessKeyId = sys.argv[1]
accessSecret = sys.argv[2]
main_domain_name = sys.argv[3]
sub_domain_name = str(sys.argv[4])
record_type = str(sys.argv[5])
ip_value = str(sys.argv[6])
#print(main_domain_name,sub_domain_name)
#检查域名是否能解析
try:
re=requests.get("http://%s.%s" %(sub_domain_name,main_domain_name))
dns = 1
except:
dns = 0
if dns == 0 :
client = AcsClient(accessKeyId, accessSecret, 'cn-shanghai')
#查询dns
record=getAliyunDnsRecord(client,record_type,main_domain_name,sub_domain_name) #字典类型
#print(record["DomainRecords"]["Record"])
if len(record["DomainRecords"]["Record"]) == 0 :
add_result = addDomainRecord(client,record_type,ip_value,sub_domain_name,main_domain_name) #返回一个RecordId,修改的时候也可以直接调用
#print "add suceessful"
print "1"
else:
print "0"