[TOC]
日常有几个URL需要监控是否可达,由于比较简单,自己写了个脚本,使用curl查询URL是否可用。如果不可用,需要发送邮件、短信、微信等方式通知。
发送邮件方式很多,现在的手机APP和邮箱也都能做到有了邮件实时提醒。比如163和邮箱大师,发送邮件给163,邮箱大师可以做到实时提醒,做为通知的首选方式。
发送短信需要短信网关,也要收费,不可行。
发送微信,查了很多资料,公众号和订阅号发送条数为个位数,不够用。微信企业号有人数限制,每天发送的信息为人数*30条/天,可以试一下。
申请微信企业号
微信企业号官网 申请,注意一个账号只能申请公众号、订阅号、企业号其中一种,并且申请好了,就不能更改,这里一定要申请企业号。
申请的时候,要你提供组织代码证明,个人的应用,没有,选择最后一项,民间组织,只要提供身份证号以及手机验证就可以了。
新建一个应用、配置以及必须的参数
申请好企业号以后,看起来企业号的应用模型是这样的:
- 一个企业号对应多个应用
- 一个企业号对应一个组织(通信录),一个组织下可以有部门,每个部门里面有个人,每个个人可以有标签(TAG)
- 一个应用可以指定管理员,可以指定部门或者标签下的个人访问
在应用中心新建一个应用,选择消息型应用,可以接受微信消息,填好应用名称等必要的参数,指定可以访问的部门或者标签,应用就建好了。
在设置 - 权限管理新建管理组,管理刚才应用的权限。命令行发消息的时候,也是使用这个权限进行发送的。最低的权限是对通信录有查看的权限,对应用有发消息的权限。
必要的参数:
- 在权限管理界面,记录下
corpid和secret - 在应用中心点击刚建好的应用,记录下
应用ID - 如果发消息给指定的人员(部门或者标签),在通信录中,记下标签的
ID或者部门的ID
接口
接口文档地址http://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5
使用建立连接和发送消息两个功能。
建立连接采用主动调用模式,发送消息为发送文本消息。
大致流程为:
- 通过corpid和secret,建立连接,取得access token。JSON格式,GET方法
- 通过access token,POST一个JSON数据,JSON数据包括发送对象、发送内容、应用ID,返回也为一个JSON包,包含errcode和errmsg,返回也为一个JSON包,包含errcode和errmsg
实现
使用SHELL编写脚本,用到两个工具curl和jq。
jq用来处理JSON格式的数据,官方网站为https://stedolan.github.io/jq/。
1 | URL_GET_TOKEN="https://qyapi.weixin.qq.com/cgi-bin/gettoken" |
第一个curl使用GET方法取得TOKEN,直接在URL中拼装corpid和corpsecret,返回JSON格式,用jq取得access_token。
第二个curl使用POST发送消息,在URL中拼装token,在-d参数中发送JSON数据。
MSG为发送消息的JSON包,包括了发送对象totag,发送消息text,应用IDagentid,safe和msgtype为固定值。
发送好以后,校验返回值,如果为空,说明URL没有访问到,如果不为空,jq取得errcode,errcode为0,说明发送成功,errcode不为0,说明发送不成功,打印errcode和errmsg。