天天看点

阿里云sdk 增加域名解析

# 安装模块

#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"