def __common_request_settings(self): request = self.request request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-26') return request
def get_region_instance_detail(self, region_id, instance_page=''): '''get instances from one special region :param region_id: a string,regionID,区域id ,egg:`cn-qingdao` :return: a list, all instances ''' tmp_list = "1"* len(instance_page) client = AcsClient(self.secret_id, self.secret_key, region_id) request = DescribeInstancesRequest() request.set_accept_format('json') request.set_PageSize(100) try: response = client.do_action_with_exception(request) str_response = str(response, encoding="utf-8") result = json.loads(str_response).get('Instances').get('Instance') if result: totalCount = json.loads(str_response).get("TotalCount") page_number = json.loads(str_response).get("PageNumber") self.instances.append(result) len_list = tmp_list + "1" * len(result) if totalCount > len(len_list): request.set_PageNumber(page_number + 1) self.get_region_instance_detail(region_id, instance_page=len_list) else: return else: return except Exception: return {"msg":_("Import asset occur error, pls try again later!") }
def add_dns_record(ali_api_id, ali_api_secret, ip, request_domain, request_sub_domain): client = AcsClient(ali_api_id, ali_api_secret, 'cn-hangzhou') request = AddDomainRecordRequest() request.set_accept_format('json') request.set_DomainName(request_domain) request.set_RR(request_sub_domain) request.set_Type("A") request.set_Value(ip) try: response = client.do_action_with_exception(request) except (ClientException, ServerException) as reason: log.error("add dns failed. do_action_with_exception " + reason) return False result = str(response, encoding='utf-8') log.info("add dns record result: \r\n" + result) json_obj = json.loads(result) if len(json_obj['RecordId']) == 0: log.error("add dns failed. error code " + json_obj['code']) return False return True
def updateDomainRecord(client, rr, domain, ip, type): records = getRecords(client, rr, domain) record_id = None for record in records: if record['RR'] == rr and record['DomainName'] == domain and record[ 'Type'] == type: record_id = record['RecordId'] avail_ip = record['Value'] avail_record = record break if record_id is None: print("不存在记录,正在添加记录") addDomainRecord(client, rr, domain, ip, type) else: print("存在记录:" + str(avail_record)) if avail_ip == ip: print("ip未改变,不更改记录,原ip=" + avail_ip + ",现ip=" + ip) else: print("ip已改变,准备更改记录,原ip=" + avail_ip + ",现ip=" + ip) request = UpdateDomainRecordRequest() request.set_action_name("UpdateDomainRecord") request.set_RR(rr) request.set_RecordId(record_id) request.set_Type(type) request.set_Value(ip) request.set_TTL(600) request.set_accept_format('json') response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) return json.loads(response)['RecordId']
def Dns(_rr): request = UpdateDomainRecordRequest() request.set_accept_format('json') logging.info('Update %s.%s DNS' % (_rr, domain)) logging.info("Getting RecordId....") record = getRecord(_rr) recordId = record['RecordId'] logging.info("RecordId:%s" % recordId) logging.info("Getting IP....") ip = getIP() logging.info("IP:%s" % ip) if ip == record['Value']: return "IP consistency does not need to be updated." logging.info("Updating DNS....") request.set_Value(ip) request.set_RecordId(recordId) request.set_RR(_rr) request.set_Type("A") response = client.do_action_with_exception(request) return json.loads(response.decode("UTF-8"))
def UpdateDomainRecord(accessKeyId,accessSecret,NewIP): client = AcsClient(accessKeyId,accessSecret, 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('alidns.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RR', 'WWW') request.add_query_param('Value', NewIP) request.add_query_param('Type', 'A') request.add_query_param('RecordId', '') response = str(client.do_action(request), encoding = 'utf-8') msg=json.loads(response) if 'Message' in msg: msg = msg['Message'] content = stamp_to_time() + ' ' + msg + '\n' WriteContent('log.conf', content) else : content = stamp_to_time() + ' ' + 'the ip of demain liuyaoze.cn has change to :'+NewIP + '\n' WriteContent('log.conf', content)
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(ali_format) request.set_RRKeyWord(ali_domain_rr) result = clt.do_action(request) result = json.loads(result) return result
def get_old_ip(record_id): clt = client.AcsClient(access_key_id, access_key_secret, 'cn-hangzhou') request = DescribeDomainRecordInfoRequest.DescribeDomainRecordInfoRequest() request.set_RecordId(record_id) request.set_accept_format(ali_format) result = clt.do_action(request) result = json.loads(result) result = result['Value'] return result
def getRecords(client, rr, domain): request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(domain) request.set_RRKeyWord(rr) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) jsonData = json.loads(response) return jsonData['DomainRecords']['Record']
def addDomainRecord(client, rr, domain, ip, type): request = AddDomainRecordRequest() request.set_accept_format('json') request.set_Value(ip) request.set_Type(type) request.set_RR(rr) request.set_DomainName(domain) response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) return json.loads(response)['RecordId']
def DiskUsed(self,rdsid): lst = ['Bytes', 'KB', 'MB', 'GB'] client = AcsClient(self.ak,self.sk,self.domain) request = DescribeResourceUsageRequest() request.set_accept_format('json') request.set_DBInstanceId(rdsid) response = client.do_action_with_exception(request) data = eval(str(response, encoding='utf-8')) diskused = getRDS.convertBytes(self,data['DiskUsed'],lst=lst) return diskused
def getRecord(_rr): request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(domain) response = client.do_action_with_exception(request) response = json.loads(response.decode("UTF-8")) for item in response["DomainRecords"]["Record"]: if item['RR'] == _rr: return item
def Describe_SubDomain_Records(client, record_type, subdomain): request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_Type(record_type) request.set_SubDomain(subdomain) response = client.do_action_with_exception(request) response = str(response, encoding='utf-8') relsult = json.loads(response) return relsult
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 update_record(client, priority, ttl, record_type, value, rr, record_id): request = UpdateDomainRecordRequest() request.set_accept_format('json') request.set_Priority(priority) request.set_TTL(ttl) request.set_Value(value) request.set_Type(record_type) request.set_RR(rr) request.set_RecordId(record_id) response = client.do_action_with_exception(request) response = str(response, encoding='utf-8') return response
def add_record(client, priority, ttl, record_type, value, rr, domainname): request = AddDomainRecordRequest() request.set_accept_format('json') request.set_Priority(priority) request.set_TTL(ttl) request.set_Value(value) request.set_Type(record_type) request.set_RR(rr) request.set_DomainName(domainname) response = client.do_action_with_exception(request) response = str(response, encoding='utf-8') relsult = json.loads(response) return relsult
def GetDNSRecord(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 Record in json_data['DomainRecords']['Record']: if yaml_data['DnsData']['RR'] == Record['RR']: return Record except Exception as e: print("获取RecordId失败") print(e) sys.exit(-1)
def yesterday_DiskUsed(self,Date,Bucketid): #获取昨天的容量 client = AcsClient(self.ak,self.sk,self.domain) request = DescribeMetricListRequest() request.set_accept_format('json') request.set_EndTime(Date + ' 08:00:00') request.set_StartTime(Date + ' 07:00:00') request.set_Namespace("acs_oss_dashboard") request.set_MetricName("MeteringStorageUtilization") request.set_Dimensions("{\'BucketName\':'%s'}" % Bucketid) response = client.do_action_with_exception(request) result = str(response, encoding='utf-8') data = json.loads(result) #str转dict,eval不安全,exec无法转含有true,false字样的内容 storage = json.loads(data["Datapoints"]) #再转一次 capacity= storage[0]["Value"] return capacity
def UpdateDomainRecord(client, yaml_data, RecordId, ip): try: dnsData = yaml_data['DnsData'] request = UpdateDomainRecordRequest() request.set_accept_format('json') DomainValue = ip request.set_Value(DomainValue) request.set_Type(dnsData['DomainType']) request.set_RR(dnsData['RR']) request.set_RecordId(RecordId) response = client.do_action_with_exception(request) print("更新域名解析成功") print("域名:" + dnsData['DomainName'] + " 主机:" + dnsData['RR'] + " 记录类型:" + dnsData['DomainType'] + " 记录值:" + DomainValue) except Exception as e: print("更新域名解析失败") print(e)
def alarm(message): print('开始发送信息:' + message) client = AcsClient(ACCESS_KEY_ID, ACCESS_SECRET, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', PHONE_NUMBER) request.add_query_param('SignName', "KisPig网") request.add_query_param('TemplateCode', "SMS_184215625") request.add_query_param('TemplateParam', "{\"message\": \"" + message + "\"}") response = client.do_action_with_exception(request) print("通知短信%s已发送%s" % (message, response)) quit()
def update_record(self, RR, value): request = UpdateDomainRecordRequest.UpdateDomainRecordRequest() request.set_action_name("UpdateDomainRecord") request.set_accept_format('json') request.set_TTL('600') sRecordid = self.get_record_id(RR) if sRecordid != None and WordsCheck.RegexChecker.judgeLegalIpv4(value): request.set_RecordId(sRecordid) request.set_Type(self.record_type) request.set_RR(RR) request.set_Value(value) else: return False pass try: # jsonReturn = json.load(self.client.do_action_with_exception(request)) # rc = self.client.do_action_with_exception(request) if None != json.loads( self.client.do_action_with_exception(request).decode( 'utf-8')): return True except: return False
def get_dns_record(ali_api_id, ali_api_secret, request_domain, request_sub_domain): client = AcsClient(ali_api_id, ali_api_secret, 'cn-hangzhou') request = DescribeDomainRecordsRequest() request.set_accept_format('json') request.set_DomainName(request_domain) request.set_PageSize("500") request.set_RRKeyWord(request_sub_domain) request.set_TypeKeyWord("A") try: response = client.do_action_with_exception(request) except (ClientException, ServerException) as reason: log.error("get dns failed. do_action_with_exception " + reason) return DnsRecord() result = str(response, encoding='utf-8') log.info("get dns record result: \r\n" + result) json_obj = json.loads(result) domain_records = json_obj['DomainRecords'] records = domain_records['Record'] ali_dns_record = DnsRecord() for record in records: if record['RR'] == request_sub_domain and record[ 'DomainName'] == request_domain: ali_dns_record.domain_name = record['DomainName'] ali_dns_record.record_id = record['RecordId'] ali_dns_record.rr = record['RR'] ali_dns_record.dr_type = record['Type'] ali_dns_record.value = record['Value'] else: continue return ali_dns_record
def __test_msg(params): """测试短信接口 :return: 无返回值,测试结果通过控制台退出码获得。0为成功,非0为失败 """ params_config = { 'sms_interface_type': { 'must': True, 'data': True, 'short': 'I', 'long': 'interface' }, 'mobile': { 'must': True, 'data': True, 'short': 'M', 'long': 'mobile' }, 'ali_accesskeyid': { 'must': True, 'data': True, 'short': 'K', 'long': 'keyid' }, 'ali_accesssecret': { 'must': True, 'data': True, 'short': 'S', 'long': 'secret' }, 'ali_signname': { 'must': True, 'data': True, 'short': 'N', 'long': 'signname' }, 'ali_verify_templatecode': { 'must': True, 'data': True, 'short': 'T', 'long': 'template_id' }, } ret_dict = get(params_config, params) errcode = ret_dict.get('errcode') if errcode and errcode < 0: sys.exit(131) try: sms_interface_type = ret_dict.get('data').get('sms_interface_type') mobile = ret_dict.get('data').get('mobile') ali_accesskeyid = ret_dict.get('data').get('ali_accesskeyid') ali_accesssecret = ret_dict.get('data').get('ali_accesssecret') ali_signname = ret_dict.get('data').get('ali_signname') ali_verify_templatecode = ret_dict.get('data').get( 'ali_verify_templatecode') if sms_interface_type == "2": import urllib import urllib.request import hashlib statusStr = { '0': '短信发送成功', '-1': '参数不全', '-2': '服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间', '30': '密码错误', '40': '账号不存在', '41': '余额不足', '42': '账户已过期', '43': 'IP地址限制', '50': '内容含有敏感词' } smsapi = "http://api.smsbao.com/" data = urllib.parse.urlencode({ 'u': ali_accesskeyid, 'p': ali_accesssecret, 'm': mobile, 'c': ali_signname }) send_url = smsapi + 'sms?' + data response = urllib.request.urlopen(send_url) the_page = response.read().decode('utf-8') if the_page != "0": print("\033[1;31m\n短信接口测试失败\n\033[0m") print(statusStr[the_page]) sys.exit(131) else: from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest client = AcsClient(ali_accesskeyid, ali_accesssecret, 'cn-hangzhou') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('RegionId', "cn-hangzhou") request.add_query_param('PhoneNumbers', mobile) request.add_query_param('SignName', ali_signname) request.add_query_param('TemplateCode', ali_verify_templatecode) request.add_query_param('TemplateParam', "{\"code\":8888}") response = client.do_action(request) result = str(response, encoding='utf-8') if result.find('"OK"') == -1: print("\033[1;31m\n短信接口测试失败\n\033[0m") print(result) sys.exit(131) print("\033[1;32m\n短信接口测试成功\n\033[0m") sys.exit(0) except Exception as e: print("\033[1;31m\n短信接口测试失败!\n\033[0m") print(e) sys.exit(131)