【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?
一、前言
最近通过python实现了发送消息给企业微信的功能,参考链接:
- 【Jenkins学习 】如何编写Python脚本来调用企业微信的api通知企业微信成员关于Jenkins的编译结果? https://blog.csdn.net/qq446282412/article/details/86361318
但是并不是每台Linux服务器上都有合适的python版本,之前这个python脚本是运行在Python 2环境下的,但是可能新的Linux服务器上装的是Python 3 之类的,因此可能写一个Shell脚本更加通用,因此我准备来写个Shell脚本来实现发送消息给企业微信。
但是写好的脚本都是需要传入参数的,因此学习一下Shell命令行参数解析工具getopts是如何使用的?通过下面的链接可以学习到。
- 【Linux学习】Shell命令行参数解析工具getopts是如何使用的? https://mp.csdn.net/postedit/86493502
下面我们来真正实现通过shell脚本调用企业微信api来发消息给企业微信成员的功能。
二、企业微信封装接口介绍
公司负责企业微信推广的同事对企业微信发送消息的api进行了再次封装,然后发送了一篇api文档给我,大致如下:
2.1 请求接口步骤
1 获取apid与Secret
请联系公司内部推广企业微信的同事,可得到调用所需的ClientId与Secret2 获取token的api
请求api
POST: http://ip地址:8000/connect/token{client_id:步骤1中获得,client_secret:步骤1中获得,grant_type:"client_credentials",scope:"ApiGateway"}
注:body使用x-www-form-urlencoded
返回的内容
返回内容:{"access_token":"","expires_in": 3600,"token_type":"Bearer"}
- 3 使用步骤2中得到的Bearer Token请求资源.
2.2 请求接口步骤发送微信消息接口说明
- 发送图文信息
POST: http://ip地址:8000/api/wechat/news
{"toUser" : "工号1|工号2....","agentId" : 0,"news" : {"articles" : [{"title" : "中秋节礼品领取","description" : "今年中秋节公司有豪礼相送","url" : "URL","picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png","btntxt":"更多"}]}
}
- 发送文本消息
POST: http://ip地址:8000/api/wechat/text
{"toUser" : "工号1|工号2....","agentId" : 0,"content":"xxxxxx"
}
- 文本卡片消息
POST: http://ip地址:8000/api/wechat/textcard{"toUser" : "工号1|工号2....","agentId" : 0,"title" : "领奖通知","description" : "<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\"highlight\">请于2016年10月10日前联系行政同事领取</div>","url":"http://www.baidu.com","btntxt":"更多"}
三、编写shell脚本来调用企业微信api
#!/bin/bash#用法提示
usage() {echo "Usage:"echo " qiyewechat.sh [-u USER] [-t TITLE] [-c CONTENT] [-d DETAIL] [-p PICTURE]"echo "Description:"echo " USER, 用户."echo " TITLE, 标题."echo " CONTENT, 内容."echo " DETAIL, 细节."echo " PICTURE, 图片."exit -1
}# 获取脚本执行时的选项
while getopts u:t:c:d:p: option
docase "${option}" inu) USER=${OPTARG};;t) TITLE=${OPTARG};;c) CONTENT=${OPTARG};;d) DETAIL=${OPTARG};;p) PICTURE=${OPTARG};;h) usage;;?) usage;;esacecho $optionecho $OPTARGdone#api的token相关参数
client_id='yourId'
client_secret='yourSecret'
grant_type='client_credentials'
scope='ApiGateway'agentId=0#RESTFUL API 接口相关参数
HOST=http://xxx.xxxxxx.com:8000wechat_api_token=$HOST/connect/token
#POST: http://ip地址/connect/token
#{# client_id:步骤1中获得,
# client_secret:步骤1中获得,
# grant_type:"client_credentials",
# scope:"ApiGateway"
#}
#注:body使用x-www-form-urlencoded#返回内容:
#{# "access_token":"",
# "expires_in": 3600,
# "token_type":"Bearer"
#}wechat_api_textcard=$HOST/api/wechat/textcard
#POST: http://ip地址/api/wechat/textcard
#{# "toUser" : "工号1|工号2....",
# "agentId" : 0,
# "title" : "领奖通知",
# "description" : "<div class=\"gray\">2016年9月26日</div> <div class=\"normal\">恭喜你抽中iPhone 7一台,领奖码:xxxx</div><div class=\"highlight\">请于2016年10月10日
前联系行政同事领取</div>",
# "url":"http://www.baidu.com",
# "btntxt":"更多"
#}wechat_api_news=$HOST/api/wechat/news
#POST: http://ip地址/api/wechat/news
#{
# "toUser" : "工号1|工号2....",
# "agentId" : 0,
# "news" : {
# "articles" : [
# {
# "title" : "中秋节礼品领取",
# "description" : "今年中秋节公司有豪礼相送",
# "url" : "URL",
# "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png",
# "btntxt":"更多"
# }
# ]
# }
#}wechat_api_text=$HOST/api/wechat/text
#发送文本消息
#POST: http://ip地址/api/wechat/text
#{
# "toUser" : "工号1|工号2",
# "agentId" : 0,
# "content":"xxxxxx"
#}# 获取token
function getAccessToken {curl -d "client_id=$client_id&client_secret=$client_secret&grant_type=$grant_type&scope=$scope" -X POST $wechat_api_token > token.jsontoken=$(cat token.json | python3 -c "import sys, json; print(json.load(sys.stdin)['access_token'])")echo $token
}#发送文本消息
echo -e "{\"toUser\":\""$USER"\", \"agentId\":"$agentId", \"content\":\""$CONTENT"\"}" > data_textcard.json
curl --write-out %{http_code} -d '@data_textcard.json' -H "Content-Type: application/json" -H "Authorization: Bearer $(getAccessToken)" -X POST $wechat_api_text#发送图文信息
#echo -e "{\"toUser\":\""$USER"\", \"agentId\":"$agentId", \"title\":\""$TITLE"\", \"description\":\""$CONTENT"\", \"url\":\""$DETAIL"\"}" > data_textcard.json
#curl --write-out %{http_code} -d '@data_textcard.json' -H "Content-Type: application/json" -H "Authorization: Bearer $(getAccessToken)" -X POST $wechat_api_textcard#发送图文信息
# echo -e "{\"toUser\":\""$USER"\",\"agentId\":"$agentId", \"articles\":[{\"title\":\""$TITLE"\", \"description\":\""$CONTENT"\", \"url\":\""$DETAIL"\", \"picUrl\":\""$PICTURE"\"}]}" > data_news.json
# curl --write-out %{http_code} -d '@data_news.json' -H "Content-Type: application/json" -H "Authorization: Bearer $(getAccessToken)" -X POST $wechat_api_news
其中
token=$(cat token.json | python3 -c "import sys, json; print(json.load(sys.stdin)['access_token'])")
这句中的python3是Linux服务器配置好的,可以参考下面的链接,如果你的系统默认是python2的话,直接改成python即可。
- https://blog.csdn.net/u010383937/article/details/73162281
四、运行shell脚本调用企业微信api来发消息给企业微信成员
我们来测试一下,20xxxxxx是我的工号,我发给自己测试下。
root@ubuntu116:/data/gitlabData/auto_back_shell# ./qiyewechat-notifier.sh -c “测试下Linux环境下发生企业微信消息” -u 20xxxxxx
c
“测试下Linux环境下发生企业微信消息”
u
20xxxxxx% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 902 0 787 100 115 34220 5000 --:--:-- --:--:-- --:--:-- 35772
{"result":true}200root@ubuntu116:/data/gitlabData/auto_back_shell#
OK了,成功了!现在我可以去修改之前的gitlab备份的全部shell脚本了,之前都是讲备份结果通过发邮件的方式,现在可以改为发送结果到企业微信了。
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/86495251
☞ 本人QQ: 3024665621
☞ QQ交流群: 123133153
☞ github.com/ouyangpeng
☞ oypcz@foxmail.com
【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?相关推荐
- Linux学习入门: shell脚本常用命令汇总
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 Linux学习最初就是要掌握shell脚本的基本命令语句,这个也是我们操作Linux操作系统的关键步骤,但是Linux的shel ...
- Linux学习--如何通过Shell脚本实现发送邮件通知功能?
1.安装和配置sendmail 不需要注册公网域名和MX记录(不需要架设公网邮件服务器),通过Linux系统自带的mail命令即可对公网邮箱发送邮件.不过mail命令是依赖sendmail的,所以我们 ...
- 企业微信加密消息体_企业微信机器人怎么发消息?企业微信机器人可以定时发消息吗?...
企业微信外部群自带群机器人功能,可以协助员工高效管理社群,帮助我们运营客户,那么企业微信机器人怎么用呢? 使用企业微信机器人,需要管理员先进入企业微信管理后台,在[客户联系]-[效率工具]-[自动回复 ...
- 使用shell脚本调用mysql数据库存储过程,并设置定时任务
本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调 ...
- Linux_《Linux命令行与shell脚本编程大全》第十八章学习总结
时间:2017年12月04日星期一 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>( ...
- Linux_《Linux命令行与shell脚本编程大全》第二章学习总结
时间:2017年04月05日 说明:本文部分内容均摘取自书籍<Linux命令行与shell脚本编程大全>,版权归原作者所有.<Linux命令行与shell脚本编程大全>(第三版 ...
- linux 脚本监听,Linux—编写shell脚本监控主机
编写SHELL脚本监控主机 1.用vi命令在/root目录是新建一个脚本文件sysmon.sh: 内容如下: #!/bin/bash dug=$(df -h | grep "/$" ...
- linux 编写shell脚本
目录 简单shell 示例 接受用户参数 判断用户参数(判断语法) 流程控制语句 (if .for .while.case) 简单shell 示例 Shell脚本命令的工作方式有两种:交互式和批处理. ...
- linux运维脚本编写,Linux运维常用shell脚本实例 (转)
1.用shell脚本批量建立Linux用户 实现要求:创建用户student1到student50,指定组为student组!而且每个用户需要设定一个不同的密码! #!/bin/bash for i ...
最新文章
- 我的世界java版背景图更换_《我的世界手机版》如何修改界面背景 界面背景修改攻略图文教程...
- SAP MM 外部采购退货的ARM功能实在是鸡肋?
- MySQL优化学习总结
- 数据的设计命名的十个要点
- Linux学习之系统编程篇:exec 函数族
- Lecture 2 Asymptotic Notation
- 直播预告 | 乘云而上:云原生数据仓库AnalyticDB
- 实践案例丨教你一键构建部署发布前端和Node.js服务
- SkinSharp用法
- Oracle查看被锁的表和解锁[转]
- 软件公司产品营销大数据分析(下)
- JavaScript设计模式详解:01、导学
- Linux下安装ORACLE(一周成果、全是干货!)
- 初步使用计算机的教学反思,静夜思教学反思(精选10篇)
- 如何下载知网上的论文?
- 用Python从零复现A星寻路算法 | 手撕代码#1
- c语言double ave,[编程入门]结构体之成绩统计2-题解(C语言代码)
- sublime text3 配置python、ruby、c/c++(c/c++不推荐这个方法)
- 宋体的显示 --12号字的真正大小
- DHTMLX Spreadsheet JavaScript Pro 5.0
热门文章
- 通过 Nginx 实现多机负载均衡
- 直播代码中关于敏感词替换的代码编辑
- ps磁性套索工具如何抠图
- Electron如何支持ESM模块
- 设计模式六大原则(SOLID)
- C++ Reference: Standard C++ Library reference: C Library: cstdio: stderr
- matlab-高数 plot 二维画图 绝对值函数 取整函数 分段函数
- android gps距离计算器,计算器刷成安卓系统 刷系统千万别找设计师
- html中a标签的属性
- Gitlab 12.9.4 的搭建部署及遇到的问题。