使用以下公式生成签名:
import time
import hmac
import hashlib
import base64timestamp = str(int(time.time() * 1000))
secret = '你的加签密钥'string_to_sign = timestamp + "\n" + secret
hmac_code = hmac.new(secret.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest()
sign = base64.b64encode(hmac_code).decode('utf-8')print("Timestamp:", timestamp)
print("Sign:", sign)
替换脚本中Access_token、Timestamp、Sign
import os
import json
import requests# 钉钉机器人的Webhook URL
dingding_webhook = 'https://oapi.dingtalk.com/robot/send?access_token=Access_token×tamp=Timestamp&sign=Sign'# 获取主机名
def get_hostname():# 获取系统信息uname_info = os.uname()# 获取主机名hostname = uname_info.nodenamereturn hostname# 获取CPU使用率
def get_cpu_usage():cpu_usage = os.popen("top -b -n1 | grep 'Cpu(s)'").readline()cpu_usage = cpu_usage.split()cpu_usage = cpu_usage[1].split('%')[0]return float(cpu_usage)# 获取内存使用率
def get_memory_usage():mem_usage = os.popen("free | grep Mem").readline()mem_usage = mem_usage.split()total_mem = float(mem_usage[1])used_mem = float(mem_usage[2])mem_usage = (used_mem / total_mem) * 100return mem_usage# 获取磁盘使用率
def get_disk_usage():disk_usage = os.popen("df -h | grep -w '/'").readline()disk_usage = disk_usage.split()disk_usage = disk_usage[4].replace('%', '')return float(disk_usage)# 发送钉钉告警
def send_dingding_alert(message):headers = {'Content-Type': 'application/json'}data = {"msgtype": "text","text": {"content": message}}requests.post(dingding_webhook, headers=headers, data=json.dumps(data))# try:# response = requests.post(dingding_webhook, headers=headers, data=json.dumps(data))# if response.status_code != 200:# print(f"发送告警失败,状态码:{response.status_code}, 响应内容:{response.text}")# else:# print("告警发送成功")# except requests.exceptions.RequestException as e:# print(f"发送告警时发生异常:{e}")# 主函数
def main():hostname = get_hostname()cpu_usage = get_cpu_usage()memory_usage = get_memory_usage()disk_usage = get_disk_usage()if cpu_usage > 80:send_dingding_alert(f"{hostname} CPU使用率超过80%: 当前使用率为 {cpu_usage}%")if memory_usage > 80:send_dingding_alert(f"{hostname} 内存使用率超过80%: 当前使用率为 {memory_usage:.2f}%")if disk_usage > 80:send_dingding_alert(f"{hostname} 磁盘使用率超过80%: 当前使用率为 {disk_usage}%")if __name__ == "__main__":main()