def sent_sms_with_phone(phone_number): ans = {} # client = AcsClient('LTAICNrMCIXkVv7O', 'XQGp8NBdcs7OBtgY1TrvrTpbZwPUdp', 'default') # 短信验证码,@maglith 友情提供 client = AcsClient('LTAIvOKVFOootzEk', 'psEqWjHnX3B4CCxA6X1g4XiFMCz5BC', 'default') 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('PhoneNumbers', str(phone_number)) request.add_query_param('TemplateCode', "SMS_171113335") request.add_query_param('SignName', "实训管理系统") # 获取随机验证码 code = str(get_random_number_str(6)) request.add_query_param('TemplateParam', "{\"code\": \"%s\"}" % code) response = client.do_action(request) ans["code"] = code ans["data"] = str(response, encoding='utf-8') return ans
def rds_redis(AccessKeyId, AccessKeySecret, RegionId): # 获取服务器系统3天后日期 today = datetime.date.today() tomorrow = today + datetime.timedelta(days=3) day_sys, month_sys, year_sys = tomorrow.strftime('%d'), tomorrow.strftime( '%m'), tomorrow.strftime('%Y') # rds实例存放列表 rds_list = [] for reg in RegionId: client = AcsClient(AccessKeyId, AccessKeySecret, reg) # 查询实例详情的默认参数设置 request = CommonRequest() request.set_accept_format('json') request.set_domain('r-kvstore.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-01') request.set_action_name('DescribeInstances') # 自定义添加查询参数 request.add_query_param('RegionId', reg) request.add_query_param('PageSize', '50') # 发送请求 response = client.do_action_with_exception(request) instance = json.loads(response)["Instances"]["KVStoreInstance"] for ins in instance: # 查询实例详情的默认参数设置 request = CommonRequest() request.set_accept_format('json') request.set_domain('r-kvstore.aliyuncs.com') request.set_method('POST') request.set_version('2015-01-01') request.set_action_name('DescribeInstanceAttribute') # 自定义添加查询参数 request.add_query_param('RegionId', reg) request.add_query_param('InstanceId', ins["InstanceId"]) # 发送请求 response = client.do_action_with_exception(request) try: rds_time = json.loads( response)["Instances"]["DBInstanceAttribute"][0]["EndTime"] ali_time = rds_time.split("-") #ali_time = ins["ExpiredTime"].split("-") year_ali, month_ali, day_ali = ali_time[0], ali_time[ 1], ali_time[2][:2] # 如果系统时间与获取到的阿里云rds过期时间相差小于或等于3天则告警 if int(day_ali) <= ( int(day_sys) + 3) and int(month_ali) <= int( month_sys) and int(year_ali) <= int(year_sys): rds_id = ins["InstanceId"] expire_time = rds_time[:10] rds_list.append([rds_id, expire_time]) except Exception as e: print(response) print("按量付费实例无到期时间", ins, e) # 如果有要过期的rds实例则打印列表,没有则不打印 #print(rds_list) if rds_list != []: return "redis rds would expired: ", rds_list else: return "no redis rds expired"
def request_get_gateway(self, gw_id): request = CommonRequest() self.request_to_json(request) request.set_domain('vpc.aliyuncs.com') request.set_version('2016-04-28') request.set_action_name('DescribeNatGateways') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('NatGatewayId', gw_id) try: response = self.clt.do_action_with_exception(request) except Exception as e: return [] return self.get_json_results(response).get('NatGateways').get( 'NatGateway')
def getecsip(ecsid): request = CommonRequest() request.set_accept_format('json') request.set_domain('ecs.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-26') request.set_action_name('DescribeInstances') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('InstanceIds', "['" + ecsid + "']") response = client.do_action(request) jsonData = json.loads(response) return jsonData['Instances']['Instance'][0]['NetworkInterfaces'][ 'NetworkInterface'][0]['PrimaryIpAddress']
def doSMSLog(config, succeed): code = 'success' if not succeed: code = 'failed' client = AcsClient(config['ak'], config['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') # 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', config['to_phone']) request.add_query_param('SignName', "USTC2020") request.add_query_param('TemplateCode', "SMS_186395017") request.add_query_param('TemplateParam', {'code': code}) response = client.do_action_with_exception(request) # python2: print(response) if response['Message'] == 'OK' and response['Code'] == 'OK': return True else: return False print(str(response, encoding='utf-8'))
def getEcsIdAndPort(client, slbid): request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeHealthStatus') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('LoadBalancerId', slbid) response = client.do_action(request) res = json.loads(str(response, encoding='utf-8')) return res['BackendServers']['BackendServer']
def test_rpc_post_with_init(self): request = CommonRequest(domain='ft.aliyuncs.com', version='2016-01-01', action_name='TestRpcApi') request.set_method('POST') request.add_query_param('QueryParam', 'queryValue') request.add_body_params('BodyParam', 'bodyValue') body = self.acs_client.do_action_with_exception(request) assert body response = json.loads(body) assert response assert response.get("Params").get("QueryParam") == 'queryValue' assert response.get("Params").get("BodyParam") == 'bodyValue'
def send_sms(self, phone_numbers, sign_name, template_code, template_param=None): 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('PhoneNumbers', phone_numbers) request.add_query_param('SignName', sign_name) request.add_query_param('TemplateCode', template_code) request.add_query_param('TemplateParam', template_param) try: response = self.acs_client.do_action_with_exception(request) logging.info("send sms result: response = %s", response) except ServerException as e: logging.warning("send sms fail: response = %s", str(e)) return -5 except ClientException as e: logging.warning("send sms fail: response = %s", str(e)) return -10 return 0
def _addIpRecord(self, rr, newIp): """ if this rr was never been set, now we set it (for the 1st time) with the ip :param rr: the rr :param newIp: the ip :return: response from Aliyun API """ client = AcsClient(self.accKey, self.accSec, '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('AddDomainRecord') request.add_query_param('DomainName', self.domain) request.add_query_param('RR', rr) request.add_query_param('Type', 'A') request.add_query_param('Value', newIp) try: response = client.do_action_with_exception(request) except Exception as err: self.logger.error( 'Error - aliyun core sdk error of addIpRecord - {}'.format( err)) raise RuntimeError(err) self.logger.info('Aliyun ip record set done - {}'.format(response)) return response
def _setNewIpRecord(self, recordId, rr, newIp): """ if this rr is already in the Aliyun domain record, now we set that with the new IP :param recordId: the record id returned from aliyun :param rr: the rr :param newIp: the ip :return: response from Aliyun API """ client = AcsClient(self.accKey, self.accSec, '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('RecordId', recordId) request.add_query_param('RR', rr) request.add_query_param('Type', 'A') request.add_query_param('Value', newIp) try: response = client.do_action_with_exception(request) except Exception as err: self.logger.error( 'Error - aliyun core sdk error of setNewIpRecord - {}'.format( err)) raise RuntimeError(err) self.logger.info('Aliyun ip record set done - {}'.format(response)) return response
def send_msg_to_phone(phone_num, verify_number): """ 将阿里云提供的发送短信demo,封装为函数,这样使用时更加方便 :param phone_num: :param content: :return: """ client = AcsClient('短信密钥', '短信密钥', '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', phone_num) request.add_query_param('SignName', "新经资讯网页") request.add_query_param('TemplateCode', "SMS_xxxxxxx") request.add_query_param('TemplateParam', "{\"code\":\"%s\"}" % verify_number) response = client.do_action(request) # python2: print(response) print(str(response, encoding='utf-8'))
def DDNS(use_v6): client = Utils.getAcsClient() recordId, lastIp = Utils.getRecordId( Utils.getConfigJson().get('Second-level-domain')) if use_v6: ip = Utils.getRealIPv6() type = 'AAAA' else: ip = Utils.getRealIP() type = 'A' logger.info("当前公网IP: %s" % ({'type': type, 'ip': ip})) if ip == lastIp: logger.info("IP未变更, 不需要修改解析记录, 当前解析IP: %s" % (lastIp)) return request = CommonRequest() request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('UpdateDomainRecord') request.add_query_param('RecordId', recordId) request.add_query_param('RR', Utils.getConfigJson().get('Second-level-domain')) request.add_query_param('Type', type) request.add_query_param('Value', ip) response = client.do_action_with_exception(request) logger.info("成功!%s", response)
def send(self, template_code: str, phone: str, param: dict): """发送验证码 :param template_code: :param phone: :param param: :return: """ request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('http') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', "寻宝网") request.add_query_param('TemplateCode', template_code) request.add_query_param('TemplateParam', json.dumps(param)) response = self.client.do_action_with_exception(request) result = json.loads(response.decode()) if result.get('Code', None) != 'OK': raise ViewException(error_code=5005, message='验证码发送失败,请联系管理员!', system_message=result.get('Message', '')) return response
def stopapp(appid): #print(appid) client = AcsClient(aukey, ausecret, areaname) request = CommonRequest() request.set_accept_format('json') request.set_method('POST') request.set_protocol_type('https') request.set_domain("edas.cn-hangzhou.aliyuncs.com") #request.set_domain(areadomain)报错 request.set_version('2017-08-01') request.add_query_param("RegionId", areaname) request.add_query_param('AppId', appid) request.set_uri_pattern('/pop/v5/changeorder/co_stop') response = client.do_action(request) print(str(response, encoding='utf-8'))
def getAliyunSlbIpPort(ids, account='', passkey='', endpoint=''): client = AcsClient(account, passkey, endpoint) for id in ids: request = CommonRequest() request.set_accept_format('json') request.set_domain('slb.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2014-05-15') request.set_action_name('DescribeLoadBalancerAttribute') request.add_query_param('LoadBalancerId', id) response = client.do_action(request) res = json.loads(str(response, encoding='utf-8')) return res
def request_get_dnat(self, dnat_id): request = CommonRequest() self.request_to_json(request) request.set_domain('vpc.aliyuncs.com') request.set_version('2016-04-28') request.set_action_name('DescribeForwardTableEntries') request.add_query_param('RegionId', 'cn-hangzhou') request.add_query_param('ForwardTableId', dnat_id) try: response = self.clt.do_action_with_exception(request) except Exception as e: return [] return self.get_json_results(response).get('ForwardTableEntries').get( 'ForwardTableEntry')
def getRecordId(domain): client = Utils.getAcsClient() request = CommonRequest() request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('DescribeDomainRecords') request.add_query_param( 'DomainName', Utils.getConfigJson().get('First-level-domain')) response = client.do_action_with_exception(request) jsonObj = json.loads(response.decode("UTF-8")) records = jsonObj["DomainRecords"]["Record"] for each in records: if each["RR"] == domain: return each["RecordId"], each["Value"]
def delete_domain_record(rr): 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('DeleteSubDomainRecords') request.add_query_param('DomainName', domain_name) request.add_query_param('RR', rr) response = client.do_action_with_exception(request) # python2: print(response) print(str(response, encoding='utf-8'))
def sendsms(phone, code_j): client = AcsClient('Public key', 'Private key', 'cn-hangzhou') req = CommonRequest() req.set_accept_format('json') req.set_domain('dysmsapi.aliyuncs.com') req.set_method('POST') req.set_protocol_type('https') # https | http req.set_version('2017-05-25') req.set_action_name('SendSms') req.add_query_param('RegionId', 'cn-hangzhou') req.add_query_param('PhoneNumbers', phone) req.add_query_param('SignName', '藏书阁') req.add_query_param('TemplateCode', 'SMS_162635987') req.add_query_param('TemplateParam', code_j) response = client.do_action(req) return response
def test_roa_stream(self): request = CommonRequest(domain='ft.aliyuncs.com', version='2016-01-02', action_name='TestRoaApi', uri_pattern='/web/cloudapi') request.set_method('POST') request.add_header('HeaderParam', 'headerValue') request.add_query_param('QueryParam', 'queryValue') request.set_content("test_content") body = self.acs_client.do_action_with_exception(request) assert body response = json.loads(body) assert response assert response.get("Params").get("QueryParam") == 'queryValue' assert response.get("Headers").get("HeaderParam") == 'headerValue' assert response.get("Body") == 'test_content'
def acs_alarm_history(starttime, endtime): request = CommonRequest() request.set_accept_format('json') request.set_domain('metrics.cn-hangzhou.aliyuncs.com') request.set_method('POST') request.set_version('2018-03-08') request.set_action_name('ListAlarmHistory') request.add_query_param('StartTime', starttime) request.add_query_param('EndTime', endtime) response = client.do_action_with_exception(request) json_reponse = json.loads(response) AlarmHistoryList = json_reponse['AlarmHistoryList'] AlarmHistory = AlarmHistoryList['AlarmHistory'] return AlarmHistory
def getRecordId(client, domain): firstLevelDomain = AliClient.getConfigJson().get('First-level-domain') request = CommonRequest() request.set_domain('alidns.aliyuncs.com') request.set_version('2015-01-09') request.set_action_name('DescribeDomainRecords') request.add_query_param('DomainName', firstLevelDomain) response = client.do_action_with_exception(request) jsonObj = json.loads(response.decode('utf-8')) records = jsonObj['DomainRecords']['Record'] print({'first': firstLevelDomain, "domain": domain}) print({'response': response}) print({"records": records}) for each in records: if each['RR'] == domain: return each["RecordId"]
def SendSms(self, number: str, sign: str, template: str, code: str): 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', number) request.add_query_param('SignName', sign) request.add_query_param('TemplateCode', template) request.add_query_param('TemplateParam', '{"code":"%s"}' % (code,)) return self.client.do_action_with_exception(request)
def sending(phonenumber, name): templateparam = '{"name":"' + name + '"}' 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', int(phonenumber)) request.add_query_param('SignName', "异想之旅") request.add_query_param('TemplateCode', "SMS_207970004") request.add_query_param('TemplateParam', templateparam) response = client.do_action(request) print(str(response, encoding='utf-8'), end='')
def send(self, phone_numbers, template_param): 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', phone_numbers) request.add_query_param('SignName', self.signName) request.add_query_param('TemplateCode', self.templateCode) request.add_query_param('TemplateParam', template_param) response = self.client.do_action_with_exception(request) return response
def send_code(phone: str, code: str): 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) request.add_query_param('SignName', "日冕游戏平台") request.add_query_param('TemplateCode', "SMS_186619468") request.add_query_param('TemplateParam', json.dumps({'code': code})) client.do_action_with_exception(request)
def send_by_alidayu(mobile, msg): client = AcsClient(accesskeyid, 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', signname) request.add_query_param('TemplateCode', templatecode) request.add_query_param('TemplateParam', '{"code":"%s"}' % msg) response = client.do_action_with_exception(request) response = json.loads(response) return response
def sendsms(self, PhoneNumber, Content): client = AcsClient(self.accesskey, self.accesssecret, self.regionid) 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', self.regionid) request.add_query_param('PhoneNumbers', PhoneNumber) request.add_query_param('SignName', self.SignName) request.add_query_param('TemplateCode', self.TemplateCode) request.add_query_param('TemplateParam', json.dumps(Content)) response = client.do_action(request) # print(str(response, encoding='utf-8')) return response
def aliyunSendSmsCode(acsClient, phoneNumbers, smsCode): """ call aliyun sms api to send sms code to phone number(s) more detail refer: 【已解决】通过阿里云短信服务SDK去用python实现发送验证码短信 http://www.crifan.com/python_call_aliyun_sms_sdk_send_short_message_verify_code :param phoneNumbers: single or multiple(seperate by ',') phone number string, eg: '15011112222' / '15011112222,15233334444' :param smsCode: 6 digit string, eg: 123456 :return: true if send ok, false if send failed """ templateParam = '{"code":"%s"}' % smsCode commonReq = CommonRequest() commonReq.set_accept_format('json') commonReq.set_domain('dysmsapi.aliyuncs.com') commonReq.set_method('POST') commonReq.set_version('2017-05-25') commonReq.set_action_name('SendSms') commonReq.add_query_param('RegionId', ALIYUN_SDK_SMS_REGION_ID) commonReq.add_query_param('PhoneNumbers', phoneNumbers) # commonReq.add_query_param('SignName', ALIYUN_SDK_SMS_SIGNNAME) commonReq.add_query_param('TemplateCode', ALIYUN_SDK_SMS_TEMPLATECODE) commonReq.add_query_param('TemplateParam', templateParam) response = acsClient.do_action(commonReq) # ACS=Alibaba Cloud Service respStr = str(response, encoding='utf-8') # normal: '{"Message":"OK","RequestId":"A216483A-5E87-49A3-9142-276821F5E10E","BizId":"166810747624160111^0","Code":"OK"}' # abnormal: # '{"Message":"没有访问权限","RequestId":"4029409A-7460-4E1F-806A-A75B5778B167","Code":"isp.RAM_PERMISSION_DENY"}' # {"Recommend":"https://error-center.aliyun.com/status/search?Keyword=InvalidVersion&source=PopGw","Message":"Specified parameter Version is not valid.","RequestId":"6A6711BD-F18E-445C-9B6F-E7F9F6EEE9E0","HostId":"dysmsapi.aliyuncs.com","Code":"InvalidVersion"} # {'Message': '触发天级流控Permits:10', 'RequestId': '85AF2393-85E3-4A12-BD92-290851E9E8A4', 'Code': 'isv.BUSINESS_LIMIT_CONTROL'} respJson = json.loads(respStr) respMessage = respJson["Message"] respCode = respJson["Code"] if (respMessage == "OK") and (respCode == "OK"): isSentOk = True errCode = "" errMsg = "" else: isSentOk = False errCode = respCode errMsg = respMessage return isSentOk, errCode, errMsg
def sms_code_send(phone_number, sms_code): 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', str(phone_number)) request.add_query_param('SignName', "路飞vue") request.add_query_param('TemplateCode', "SMS_173251941") request.add_query_param('TemplateParam', json.dumps({"code": sms_code})) response = client.do_action(request) return json.loads(str(response, encoding='utf-8'))