使用shell通过微信公众号发送模板消息 - CSDN博客
- -如下通过shell脚本实现,通过微信公众号发送模板消息到个人微信号. 由于没有认证的公众号,只能通过自己申请的个人订阅号(可以自行申请),并到开发者工具中开通公众平台测试帐号实现该功能. 1.获取测试公众号appID和appsecret. *2.关注测试号二维码获取用户openid. 得到模板id: OA0PX8pqc2X7t_y05y5GxZ8LutBpu341FIYSeQOkno.
如下通过shell脚本实现,通过微信公众号发送模板消息到个人微信号。
由于没有认证的公众号,只能通过自己申请的个人订阅号(可以自行申请),并到开发者工具中开通公众平台测试帐号实现该功能。
1.获取测试公众号appID和appsecret
*2.关注测试号二维码获取用户openid
3.新增模板获取模板ID
得到模板id: OA0PX8pqc2X7t_y05y5GxZ8LutBpu341FIYSeQOkno
这里就不啰嗦了,直接上shell脚本代码,具体看注释
#!/bin/sh# 微信消息发送脚本 zhutw#全局配置--#微信公众号appIDappID=wx*******0ebde756#微信公众号appsecretappsecret=138********0446e9ae04f2#微信公众号发送消息模板tpl_id=OA0PX8pqc2X7t_-y05y5GxZ8LutBpu341FIYSeQOkno#消息模板:# {{first.DATA}}# 项目名称:{{name.DATA}}# 报警时间:{{date.DATA}}## {{remark.DATA}}#获取微信公众号AccessToken,并缓存到本地 函数getAccessToken(){if[-f"$HOME/.wechat_accesstoken"];thenaccess_token=`cat$HOME/.wechat_accesstoken | awk -F":"'{print $1}'`
expires_in=`cat$HOME/.wechat_accesstoken | awk -F":"'{print $2}'`
time=`cat$HOME/.wechat_accesstoken | awk -F":"'{print $3}'`if[ -z$access_token] || [ -z$expires_in] || [ -z$time];thenrm-f$HOME/.wechat_accesstoken
getAccessTokenfielsecontent=$(curl"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appID&secret=$appsecret")echo"get content:$content"access_token=`echo$content| awk -F"\""'{print $4}'`
expires_in=`echo$content| awk -F"\""'{print $7}'| cut-d"}"-f1|cut -c2-`echo"access_token =$access_token"echo"expires_in =$expires_in"time=$(date +%s)echo"$access_token:$expires_in:$time">$HOME/.wechat_accesstokenif[ -z$access_token] || [ -z$expires_in] || [ -z$time];thenecho"not get access_token"exit0fifiremain=$[$(date +%s) -$time]
limit=$[$expires_in-60]if[$remain-gt$limit];thenrm-f$HOME/.wechat_accesstoken
getAccessTokenfi}#发送消息函数sendMessage(){#消息json体message=`cat << EOF
{"touser":"$openid","template_id":"$tpl_id","url":"$url","data":{"first": {"value":"$first","color":"#FF0000"},"name":{"value":"$name","color":"#173177"},"date": {"value":"$date","color":"#173177"},"remark":{"value":"$remark","color":"#FF0000"}
}
}
EOF
`echo"send message :$message"curl -X POST -H"Content-Type: application/json"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=$access_token-d"$message"}#帮助信息函数usage(){
cat <<EOF
usage:$0[-u openids-ssummary -n name -t time-ddetail-llink] [-h]
u wechat user openid , multiple comma separated
s message summary
n project name
t alarm time
d message detail
l link address
h output thishelpandexitEOF
}#获取脚本执行参数whilegetopts":u:s:n:t:d:h:l:"op;docase$opinu)
openids="$OPTARG";;
s)
first="$OPTARG";;
n)
name="$OPTARG";;
t)
date="$OPTARG";;
d)
remark="$OPTARG";;
l)
url="$OPTARG";;
*)
usageexit0;;esacdone#判断条件满足发送消息if[[ -n$openids&& -n$first&& -n$name&& -n$date]];thengetAccessToken
OLD_IFS="$IFS"IFS=","arr=($openids)
IFS="$OLD_IFS"foropenidin${arr[@]}dosendMessagedoneexit$?elseecho"params error."usageexit1fi
关于微信公众号接口说明查看如下接口wiki:
https://mp.weixin.qq.com/wiki
1.开始开发->获取access_token
2.消息管理->模板消息接口
执行命令脚本即上述shell脚本内容。记得设置脚本执行权限 chmod +x sendMessageForWechat
shell
./sendMessageForWechat -u o4bHbvjL9aWoRCa29vdOQ9aJMq0w -s "192.168.1.90磁盘空间不足" -n 测试系统 -t "2017-01-15 13:00:10" -d "磁盘已使用超过80%,剩余5G,请及时处理" -l "http://m.baidu.com"
点击消息,打开百度链接。。。