摘要
在linux shell
中, 钉钉机器人的消息主体貌似必须是写死的, 很不灵活.
于是使用python
发送钉钉消息
代码展示
用python发送钉钉时, 不需要导入钉钉相关的依赖
-*- coding:utf-8 -*-
import os
import datetime
import requests
import json
##### 发消息的主体 #####
def msg(text):
json_text = {
"msgtype": "text",
"at": {
"atMobiles": [
"166****6666"
],
# 一般不需要@所有人, 设置false后, 分别配置即可
"isAtAll": False
},
"text": {
"content": text
}
}
print(requests.post(api_url, json.dumps(json_text), headers=headers).content)
##### 主函数 #####
if __name__ == '__main__':
# 获取昨天的时间
yesterday = (datetime.date.today() + datetime.timedelta(-1)).strftime('%Y%m%d')
# 运行shell脚本
os.system("bash checkdata.sh")
# 读取结果文件
try:
f = open('res/check.' + yesterday, 'r') # 打开文件
text = f.read() # 读取文件内容
finally:
if f:
f.close()
headers = {'Content-Type': 'application/json;charset=utf-8'}
# 将钉钉机器人给的地址写到此处
api_url = "https://oapi.dingtalk.com/robot/send?access_token=***"
# 调用方法
msg(text)
补充
再补充一个shell
发钉钉的示例(点此查看钉钉官方文档)
curl 'https://oapi.dingtalk.com/robot/send?access_token=***' \
-H 'Content-Type: application/json' \
-d '{
"msgtype": "markdown",
"markdown": {
"title":"任务报警 @17600773107 @16601512295",
"text": "## 异常概述: 进程中断 \n\n 进程描述: node02节点flume任务-loadlogs \n\n 负责人: @166****6666 @188****8888 \n\n 默认处理方案: 重新启动"
},
"at": {
"atMobiles": [
"166****6666",
"188****8888"
],
"isAtAll": false
}
}'