shell或python调用企业微信发送消息(实现报警功能)

官方文档

企业内部开发 简易教程:https://work.weixin.qq.com/api/doc#90000/90003/90487 服务端API:https://work.weixin.qq.com/api/doc#90000/90135/90664

注册登陆企业微信

登录企业微信管理端 -> 应用与小程序 -> 应用 -> 自建,点击“创建应用”,设置应用log、应用名称等信息,创建应用。 创建完成后,在管理端的应用列表里进入该应用,可以看到agentid、secret等信息,这些信息在使用企业微信API时会用到。 创建完成后,该应用会自动出现在可见范围内的成员的企业微信终端上(包括手机端、pc端、微工作台)

shell脚本

#!/bin/bash
# shell调用企业微信发送消息命令
# ./weixin.sh ${人员} "消息"
# 例:
# ./weixin.sh @all "hello!"
# ./weixin.sh maYun "hello!"
# 注:
# 消息中可以使用"\n"表示换行;
# 消息中不可以使用空格;

# 微信接口参数
# 根据自己申请的企业微信上接口参数调整;
corpid='XXXXXXXXXXXXXXXXXX'
appsecret='XXXXXXXXXXXXXXXXXX'
agentid=XXXXXXX

#获取accesstoken
accesstoken=$(/usr/bin/curl https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}\&corpsecret=${appsecret} | jq -r '.access_token')

#发送消息
msgsend_url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}"

json_params="{\"touser\":\"${1}\",\"msgtype\":\"text\",\"agentid\":\"${agentid}\",\"text\":{\"content\":\"${2}\"},\"safe\":\"0\"}"

echo -e "\n${json_params}"
#/usr/bin/curl -X POST ${msgsend_url} -d ${json_params} | jq -r '.errcode'
/usr/bin/curl -X POST ${msgsend_url} -d ${json_params}

python脚本(推荐)

#!/usr/bin/env python3
#-*- coding: utf-8 -*-
# python调用企业微信发送消息命令

# 发送消息命令
# python weixin.py ${人员} 主题 正文
# 例如:
# python3 weixin.py maYun a b
# ./weixin.py maYun n m
# 说明;当一个变量含有多个值或者含有空格、回车符号时,可以使用双引号。
# 		当通知所有用户时可以把用户参数设置成"@all"

import requests
import sys
import os
import json
import logging

# 日志模块
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
                datefmt = '%a, %d %b %Y %H:%M:%S',
                filename = os.path.join('/tmp','weixin.log'),
                filemode = 'a')

# 微信接口参数
# 根据自己申请的企业微信上接口参数调整;
corpid='XXXXXXXXXXXXXXXXXX'
appsecret='XXXXXXXXXXXXXXXXXX'
agentid=XXXXXXX

#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
#       "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
                "content": message
        },
        "safe":0
}

req=requests.post(msgsend_url, data=json.dumps(params))

# 写日志
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)