Centos7 利用shell发送企业微信 加入预警功能

使用缘由

由于公司服务器很多,有时候为了监控服务器状况,就需要预警功能。像以前一般都是邮件,短信预警,但是邮件有时候通知不及时,短信又需要花费费用。所以用企业微信是最方便,也是最经济实惠,实时性最高的。下面得shell代码刚好是我利用企业微信来进行服务器预警的。

1.获取应用信息

首先要用企业微信管理员,创建一个用于预警的应用,并且获得corpid,corpsecret,有了这两个以后就可以用这个应用进行预警了。

2.安装jq,来解析json

yum -y install jq

下面是shell代码片段,里面还有以前用Jenkins,编译功能成功后发企业微信的模板,我就没删除了。

#!/bin/sh
source /etc/profile 
corpid=sfwefwsfsdfwefoeifjofijsdofijwefwe
corpsecret=sdfqwefwefwefsfsdfsdfsdf
tmp_token_file=/tmp/current_token.txt
message_token=

function  send_textcard_message(){
 get_token
 title=$(echo ${message_title} | sed 's/ /\\u0020/g')
 desc_text=$(echo ${message_body} | sed 's/ /\\u0020/g')
 highlight_text=$(echo ${message_highlight}  | sed 's/ /\\u0020/g')
 highlight_text=$(echo ${highlight_text}  | sed 's/#n/\\u000d/g')
 to_user=${to_user}
 now_date_str=`date +"%Y-%m-%d"`
 now_time_str=`date +"%H:%M:%S"`
 echo "BUILD_URL:"$BUILD_URL
curl -X POST 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token='$message_token  -H 'Content-Type: application/json' -d '
 {
    "touser" : '\"$to_user\"',
    "msgtype" : "textcard",
    "agentid" : 1000003,
    "textcard" : {
            "title" :'\"$title\"',
            "description" : "
'$now_date_str' '$now_time_str'
'$desc_text'
'$highlight_text'
", "url" : '\"$BUILD_URL\"', "btntxt":"更多" }, "enable_id_trans": 0, "enable_duplicate_check": 0, "duplicate_check_interval": 1800 }' } function get_token(){ if [ ! -f $tmp_token_file ] ; then get_remote_token fi expires_second=$(cat $tmp_token_file | jq ".expires_second") now_second=`date +%s` time_interval=`expr $expires_second - $now_second` echo $time_interval if [ "$time_interval" -le "100" ] ; then get_remote_token fi message_token=$(cat $tmp_token_file | jq ".access_token" | sed 's/"//g') } function get_remote_token(){ data=$(curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$corpid&corpsecret=$corpsecret" | jq ".access_token,.expires_in") echo $data token=`echo $data | awk '{print $1}'` expires_in=`echo $data | awk '{print $2}'` expires_second=`date +%s -d "+$expires_in second"` echo "{\"access_token\":$token,\"expires_second\":$expires_second}" > /tmp/current_token.txt } echo "url:"$BUILD_URL"console" echo "BRANCH_NAME:"$BRANCH_NAME echo "BUILD_NUMBER:"$BUILD_NUMBER echo "JOB_NAME:"$JOB_NAME to_user=${1} message_type=${2} message_title=${3} message_body=${4} message_highlight=${5} BUILD_STATUS=`curl -u "tomson:tomson" $BUILD_URL/api/json?pretty=true 2>/dev/null | jq ".result" | sed 's/"//g'` EXECUTOR=`curl -u "tomson:tomson" $BUILD_URL/api/json?pretty=true 2>/dev/null | jq ".actions[0].causes[0].userId" | sed 's/"//g'` echo "BUILD_STATUS:"$BUILD_STATUS if [ "$to_user" == "" ] ; then echo "no send to user" exit fi if [ "$message_type" == "" ] ; then message_type=0 fi if [ "${message_title}" == "" ] ; then message_title="编译通知" fi if [ "$message_body" == "" ] ; then message_body=$JOB_NAME"#"$BUILD_NUMBER:"系统编译完成\n状态:"$BUILD_STATUS"\n执行人:"$EXECUTOR fi if [ "$message_highlight" == "" ] ; then message_highlight="请人工确认是否正常" fi if [ "$BUILD_URL" == "" ] ; then BUILD_URL="http://www.sdfsdf.com/" fi if [ "$message_type" -eq "1" ] ; then echo "message type:1" else echo "textcard" echo "${message_title}" send_textcard_message ${message_title} ${message_body} ${message_highlight} ${to_user} fi

第一个参数,是接收人
第二个参数 是消息类型,可以定义消息模板,这一代码我还没完全写完,我直接用的2
第三个参数 是title,标题
第四个参数 是消息内容
第五个参数 是希望内容高亮的内容
接下来,我们运行示例

./wxsend.sh yuanxuan 2 "System Severi" "please quick check" "10.10.10.10"

Centos7 利用shell发送企业微信 加入预警功能_第1张图片

运行代码后,企业微信就会收到这样的通知
Centos7 利用shell发送企业微信 加入预警功能_第2张图片

你可能感兴趣的:(linux系统运维,企业微信,linux,服务器,运维,数据库,bash)