概述
使用shell脚本发送消息到企业微信的应用中,脚本支持文本,图片,文件 三种消息类型
需要用到jq命令,jq是一个json解析工具:jq官网
* 注意应用权限对应的部门或者用户是否正确,不然会发送失败,可以选择只按部门或用户发送
* token需要缓存的话,需redis支持,然后去掉redis_token()和redis_token()代码的注释,把第20行token变量代码加上注释# 安装jq命令
# centos
yum install jq -y
# ubuntu
apt-get install jq -y#!/bin/bash
# Author:jinchuang [https://me.jinchuang.org/archives/983.html]
# 发送消息到企业微信应用里面
# 企业id
id="xxxxxxxxxxxxxxxxxx"
# 应用id
agentid="xxxxxxx"
# 应用secret
secret="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 部门id
toparty=x
# 用户id [也就是用户账号,多个用户用|符号分开]
touser=""
# API接口
url="https://qyapi.weixin.qq.com/cgi-bin"
# 获取token [这里token没做缓存,如果频繁调用gettoken接口,会受到频率拦截,官方默认token值有效时间2小时]
token=`curl -s "$url/gettoken?corpid=$id&corpsecret=$secret"|jq -r .access_token`
# 获取token写入Redis缓存
#function get_token(){
# token=`curl -s "$url/gettoken?corpid=$id&corpsecret=$secret"|jq -r .access_token`
# redis-cli set token $token >/dev/null 2>&1
# redis-cli expire token 3000 >/dev/null 2>&1
#}
# 从Redis缓存读取token
#function redis_token(){
# ttl_token=`redis-cli ttl token|awk '{print $1}'`
# if [ "$ttl_token" -le "-2" ]
# then
# get_token
# else
# token=`redis-cli get token`
# test_token=`curl -s "$url/agent/get?access_token=$token&agentid=$agentid"|jq -r .errcode`
# if [ "$test_token" -eq "0" ]
# then
# sleep 0.1
# elif [ "$test_token" -ne "0" ]
# get_token
# fi
# fi
#}
#redis_token
# 发送消息参数
part="message/send?access_token=$token"
# 上传临时素材参数
upload="media/upload?access_token=$token&type=$1"
# 执行提示
function tips(){
code=`jq -r .errcode`
if [ "$code" == "0" ]
then
echo -e "