公司中使用钉钉机器人将mysql中查询到的数据推送给运营

由于公司运营需要我提供给他们网站的内容运营数据,一次两次还好,直接查询数据库发给他们,但是每天或者每周都要去查询,根据运维的习惯,那就是必须要写成脚本,让定时任务去跑,正好最近研究了钉钉机器人通知,自己写的脚本监控也是使用的钉钉机器人发送消息,非常好用,对于将数据推送给运营也非常适合,所以就创建了一个钉钉群创建了一个钉钉机器人,将运营拉进来,让钉钉机器人定时推送给他们。


具体实现主要是以下两个脚本,所有操作都写好步骤,在这里就不啰嗦了。


Article_statistics.sh 脚本

#!/bin/bash
#临时存放查询到的数据
TMP_DIR=/data/mysql_tmp
#在mysql中查询到的数据,导入到一个文件中,是以文本格式显示,如果是使用wps查看,将此文本格式的后缀改为xls
#    也是可以打开的,不过如果是苹果系统,是打不开的,所以就考虑到了转码
mysql -uroot -p****** -e "SELECT *****" >$TMP_DIR/Article_statistics_`date +%F`.txt
#使用python将txt转化为xls格式
#此转码脚本使用的是xlwt库 可以使用pip install xlwt 下载安装
#转码支持中文,使用的是python2.7
python /server/scripts/txt_to_xls.py $TMP_DIR/Article_statistics_`date +%F`
#将转码后的文件,放到web服务器上,访问此文件会直接进行下载
scp $TMP_DIR/Article_statistics_`date +%F`.xls web_server01:/var/www/article_statistics/download/
#通过钉钉发送通知--(在dingmail中已经做好了固定连接,比如http://download.gaoyunwei.com/ )
#所以只需要添加后部分就可以通过点击打开连接进行下载
#因为是非公开数据,所以要进行配置nginx的auth认证
dingmail "download/Article_statistics_`date +%F`.xls"


dingmail 脚本

#!/bin/bash 
ACCESS_TOKEN="*********"
#上面提到的固定的连接
URL="http://download.gaoyunwei.com/"
#钉钉的api调用接口
Dingding_Url="https://oapi.dingtalk.com/robot/send?access_token=${ACCESS_TOKEN}" 
#这里采用的是每次推送都发送新的nginx认证密码
#生成10位的随机密码
PASSWD=`strings /dev/urandom |tr -dc A-Za-z0-9 | head -c10` 
#将密码写入临时文件,nginx认证请研究下其他人的博客
printf "downloaduser:$(openssl passwd -crypt $PASSWD)\n" >/tmp/httpasswd 
#发送密码覆盖上一次产生的密码到web服务器
scp /tmp/httpasswd web_server01:/etc/nginx/httpasswd
#信息发送
# 注意这里的写法,使用的是markdown格式。
# [![download]($URL/png/4.png)]($URL/$1)\n  这一个实际上就是一个图片链接,钉钉上的消息看起来不是很枯燥
#这里可能会有朋友注意到我使用了ssh java2 远程来执行curl命令,这是因为我们数据库服务器不能上网^^^^^^,只能借网执行了,也算是个小技巧
SendMessageToDingding(){ 
    ssh JAVA2 "curl -s ${Dingding_Url} -H 'Content-Type: application/json' -d '
    {
        \"msgtype\": \"markdown\",
        \"markdown\": {
                \"title\":\"文章数据统计\",
                \"text\":\"#### app文章数据统计 \n > 采集时间:`date +%F_%T`\n\n > [![download]($URL/png/4.png)]($URL/$1)\n  > ###### 账号:downloaduser密码:$PASSWD\"
                },
        \"at\": {
                \"atMobiles\": [\"\"], 
                \"isAtAll\": false
        }
    }'"
} 
#这里采用了一个参数传递,关于钉钉的格式,也是有很多细节需要注意
#首先注意一点,不能随便去用空格,否则数据会被隔断
#具体钉钉的使用,这里只做个演示而已,详细部分请研究钉钉机器人的官方文档
SendMessageToDingding $1
echo


通过定时任务每周一发送一次

具体的实现效果

ding.png

猜你喜欢

转载自blog.51cto.com/songxiao/2161310