一、前言
此程序主要是调用中台封装好的短信接口,进行发送zabbix报警信息
二、主程序
main.py
from encryption import encryption
from config import *
from log import log_func
import requests
SecretKeyContent = encryption()
header = {
"Content-Type": "application/json",
"RequestTime": timestamp,
"SecretKey": SecretKeyContent,
"AppId": appid
}
def main():
response_data = requests.post(url + api,data=json_data,headers=header)
log_func(response_data.text)
if __name__ == '__main__':
main()
三、配置文件
config.py
import time,json
appid = "xxxxxxxxxx"
appkey = "xxxxxxxx"
#时间戳* 1000是为了将秒变成毫秒,在去除小数点以后的内容
timestamp = str(time.time() * 1000).split(".")[0]
url = "http://xxxxxxxxxxxxx"
api = "/xxxxxx/xxxxx/sendMass"
#发送的手机号
phoneList = ['12345678910','12345678910']
data = {
"content": "zabbix测试短信",
"phoneList": phoneList
}
json_data = json.dumps(data)
四、加密函数文件
encryption.py
from config import *
import hashlib,base64
def encryption():
#将appid和 appkey 时间戳 形成一个综合字符串
encryption_str = appid + appkey + timestamp
#对字符串进行md5加密
md5 = hashlib.md5()
md5.update(encryption_str.encode("utf-8"))
#digest()函数是取出 二进制数据, hexdigest()函数是取出16进制数据
result = md5.digest()
#对md5后的二进制数据进行base64编码,特别注意的是,这里的decode的作用是将base64后的二进制数据 转化为字符串
bs = base64.b64encode(result).decode("utf-8")
return bs
五、日志记录
import logging
#1.loggging系统库默认记录的是warring级别以及以上的级别才开始记录,通过修改level=logging.DEBUG才开始
#2.filename="./logs/send_message.log" 将日志写入到文件
#3. 使用追加模式
#4. format="%(asctime)s %(message)s", 格式化日志格式, “%(asctime)s %(message)s 固定格式,不能自定义修改”
#5. datefmt="%m/%d/%Y %I:%M:%S" 规定了asctime的时间 的显示效果
import logging,os
file_url = os.path.dirname(__file__)
logging.basicConfig(filename=file_url + "/logs/send_message.log",
filemode='a',
format="%(asctime)s %(message)s",
datefmt="%m/%d/%Y %I:%M:%S",
level=logging.DEBUG)
def log_func(log_content):
logging.debug(log_content)