dingTalk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/bash
### 配置变量
#LOCAL_REPO=$(cd "$(dirname "$0")"; pwd)
#LOCAL_REPO=$( cd "${LOCAL_REPO}";cd ../../; pwd )
#MODEDIR=$(cd "$(dirname "$0")"; pwd)
## 钉钉机器人信息
DINGTALK_ACCESS_TOKEN=******
DINGTALK_SECRET=******
read timestamp sign < <( python3 ${MODEDIR}/get_signs.py ${DINGTALK_SECRET} )
## 获取当前节点系统信息:
HostName=$( /bin/hostname )
if [ -f /sbin/ip ]; then
IPDDR=$( /sbin/ip addr | grep -EwA 4 "eth0|ens192|en0" | grep -w inet | awk '{print $2}'|awk -F'/' '{print $1}' )
elif [ -f /sbin/ifconfig ]; then
IPDDR=$( /sbin/ifconfig | grep -EwA 4 "eth0|ens192|en0" | grep -w inet | awk '{print $2}'|awk -F'/' '{print $1}' )
else
echo "无法获取本机内网ip"
IPDDR=""
fi
# ip.xtrfr.cn,前面的三级域名 ip 可以是随便的字符
InternetIP=$( curl -s ip.fscloude.cn )
## 消息体颜色变量:
Pale_Green="#00CC00" # 浅绿色
Pale_Blue="#0000dd" # 浅蓝色
Pale_Red="#dd0000" # 浅红色
Pale_Orange="#FF3333" # 红橙色
Orange_Red="#FF9966" # 正橘红色
Red_Brown="#990000" # 红棕色
# 默认颜色
Topic_Color="${Pale_Green}" # 浅绿色
GigRo_Color="${Pale_Blue}" # 浅蓝色
function dingTalk() {
local health_status=$1
local push_info="$2"
#当前时间
NowTime="$( date "+%Y-%m-%d %H:%M:%S" )"
## 消息体
# 去除执行后返回信息中的回车
push_info="$( echo "${push_info}" | tr '\n' ' ' )"
## 消息体变量:
# 颜色变动
if [[ ${health_status} -ne 0 ]]; then
health_status=Failed
Topic_Color="${Pale_Orange}"
Topic_Mk_Cnt='<font color='"${Topic_Color}"'> CallCenter-OSS-Rsync 同步失败 - P1</font>'
else
health_status=Succeed
Topic_Color="${Pale_Green}"
Topic_Mk_Cnt='<font color='"${Topic_Color}"'> CallCenter-OSS-Rsync 同步成功 - P1</font>'
fi
Alert_Mk_Source='**来源:** '"ECS Crontab Script"''
Alert_Mk_Name='**告警名称:** '"呼叫中心录音上传OSS"''
HostName_Mk_Cnt='**推送主机:** '"${HostName}"''
HostIPNet_Mk_Cnt='**内网地址:** '"${IPDDR}"''
HostIPNat_Mk_Cnt='**公网地址:** '"${InternetIP}"''
NowTime_Mk_Cnt=' **推送时间:** '"${NowTime}"''
Health_Mk_Cnt=' **同步状态:** **<font color='${Topic_Color}'>'${health_status}'</font>**'
StaInfo_Mk_Cnt=' **状态信息:** \n<font color='${Topic_Color}'>'${push_info}'</font>'
message='{
"msgtype": "markdown",
"markdown": {
"title": "呼叫中心OSS录音同步状态",
"text": "## '${Topic_Mk_Cnt}'\n'${Alert_Mk_Source}'\n\n'${Alert_Mk_Name}'\n\n**告警内容:**\n> - '${HostName_Mk_Cnt}'\n> - '${HostIPNet_Mk_Cnt}'\n> - '${HostIPNat_Mk_Cnt}'\n> - '${NowTime_Mk_Cnt}'\n --- \n> - '${Health_Mk_Cnt}'\n\n> - '${StaInfo_Mk_Cnt}'"
},
"at": {
"atMobiles": ["15660830862"],
"isAtAll": false
}
}'
# 发送钉钉消息
curl -s 'https://oapi.dingtalk.com/robot/send?access_token='"${DINGTALK_ACCESS_TOKEN}"'×tamp='${timestamp}'&sign='${sign}'' \
-H 'Content-Type: application/json' \
-d "${message}"
}
调用方式
1
2
3
4
# 在其他脚本中
source dingTalk.sh
dingTalk $? "告警信息"
本文由作者按照
CC BY 4.0
进行授权