SHELL定时任务执行后钉钉机器人通知

最近,服务器不稳定,一些定时任务居然会出现没有执行的情况,所以,今天抽空写一个公共库,方便执行完毕调用钉钉机器人通知一下。

使用方法:将下面的代码保存为SdevSHcommon.sh文件,然后在需要的地方调用,注意,路径的正确。另外就是代码中的e**************************************************************f位置要修改为钉钉机器人的token值。要不,通知会出现错误,或者,在调用的时候指定token值。

然后在需要的地方,增加:

trap ‘finishNotice “{DATETIME}\n我这个是替换测试” 180********’ EXIT

将上面的”{DATETIME}\n我这个是替换测试”替换成你需要的内容,180********改为你的钉钉账户号,或者不填写,则通知全体。如果没有修改默认的token值则需要指定第三个参数。

其他就看代码吧,很简单的。

**********

#!/bin/bash

#
# . ./SdevSHcommon.sh
#

#
# USAGE:
# DingNotice “通知内容” [“AT谁”] [“群机器令牌”]
#
DingNotice()
{
local URL=”https://oapi.dingtalk.com/robot/send?access_token=”
# 通知内容
local MSG=$1
# at 谁
local TO=$2
# 机器人授权令牌
local TOTOKEN=$3
#
if [ “${MSG}” == “” ]; then
echo “通知内容不能为空”
exit 1
else
local datetime=$(date +”%Y-%m-%d %H:%M:%S”)
MSG=`echo ${MSG} | sed “s/{DATETIME}/${datetime}/g”`
#echo ${MSG}” – “${TO}” – “${TOTOKEN}
#exit 1
MSG=”\”msgtype\”: \”text\”,
\”text\”: {
\”content\”: \”${MSG}\”
}”
fi
if [ “${TO}” != “” ]; then
MSG=${MSG}”,”
TO=”\”at\”: {
\”atMobiles\”: [
\”${TO}\”
],
\”isAtAll\”: false
}”
fi
if [ “${TOTOKEN}” == “” ]; then
TOTOKEN=${URL}”e**************************************************************f
else
TOTOKEN=${URL}${TOTOKEN}
fi
#echo $@
#echo ${MSG}” – “${TO}” – “${TOTOKEN}
#exit 1
curl \
${TOTOKEN} \
-H ‘Content-Type: application/json’ \
-d “{
${MSG}
${TO}
}”
}

# DingNotice “测试一下”

#
# trap finishNotice EXIT
#
finishNotice()
{
# 通知内容
local MSG=$1
# at 谁
local TO=$2
DingNotice ${MSG} ${TO}
}
# trap ‘finishNotice “{DATETIME}\n我这个是替换测试” 180********’ EXIT

发表评论