上一篇讲了腾讯云同步工具的使用,这篇主要是补充如何将同步结果主动消息通知。

因为cos migration 工具是java语言,并在github开源的,所以可以直接修改源码,添加webhook推送代码。

主要的步骤如下:

  1. 在群聊中添加自定义机器人,获取webhook地址。
  2. 修改cos migration工具的源码,在同步任务后添加通知任务,向webhook地址post数据

上述步骤完成后群聊中就可以显示同步结果了,有成功的文件数,还有失败的文件路径及原因

webhook服务api

这里使用钉钉的群聊自定义机器人,当然可以用自己的服务器搭建,但最后还是希望可以通知到终端用户,使用现成的平台更改方便和高效。钉钉机器人的文档已经很完备了。

  1. 创建群聊
  2. 添加机器人,获取webhook地址

使用python简单测试下接口,官方文档也有java和php的测试例子

import sys
import requests
import json def send_msg(msg):
url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxx"
headers = {'content-type': 'application/json; charset=UTF-8'}
data = {
"msgtype": "text",
"text": {
"content": msg
},
"at": {
"atMobiles": [
"13XXXXXXXXX"
],
"isAtAll": False
}
}
conrest = requests.post(url, data=json.dumps(data, ensure_ascii=False).encode('utf8'), headers=headers)
print(conrest.text, end=' ')
print(conrest.status_code) if __name__ == '__main__':
# text = sys.argv[1]
text = '你好,阿里云的钉钉,我是腾讯的cos migration'
send_msg(text)

修改java代码

因为对java不太熟,所以这边使用python脚本写https post的功能。java中调用终端执行python脚本。

同步成功跟同步失败的日志都通过python脚本发送消息。

java调用shell命令行的方法

     public static void callShell(String[] shellString, boolean waitExit) {
try {
Process process = Runtime.getRuntime().exec(shellString);
if(!waitExit){
return;
}
int exitValue = process.waitFor();
if (0 != exitValue) {
log.error("call shell failed. error code is :" + exitValue);
}else{
log.info("succeed to call cmd ");
}
} catch (Exception e) {
log.error("call shell failed. " + e);
}
}

添加同步任务

             printTaskStaticsInfo();
sendInfo2Webhook(); // 同步任务之后,添加消息通知任务
     public void sendInfo2Webhook(){
if(TaskStatics.instance.getSuccessCnt() > 0){
// 同步文件数大于0时,消息推送
String noty_info = String.format("成功同步文件数 : %d", TaskStatics.instance.getSuccessCnt());
String[] shellString = {"python3", "dingdingrobot.py", noty_info};
SystemUtils.callShell(shellString, false);
}

       // 查看error.log ,获取失败文件和原因
String[] shell_str = {"nohup", "sh", "webhook_error_DING.sh", ">/dev/null 2>&1 & "};
SystemUtils.callShell(shell_str, false);
}

 python代码

#  dingdingrobot.py  脚本

 import sys
import requests
import json
import datetime def send_msg(msg):
now_time = datetime.datetime.now().strftime('%d{d}%H:%M{M}\n').format(d='号', M='分')
url = "https://oapi.dingtalk.com/robot/send?access_token=xxxx"
headers = {'content-type': 'application/json; charset=UTF-8'}
data = {
"msgtype": "text",
"text": {
"content": "%s*%s" % (now_time, msg)
}
}
conrest = requests.post(url, data=json.dumps(data, ensure_ascii=False).encode('utf8'), headers=headers)
print(conrest.text, end=' ')
print(conrest.status_code) if __name__ == '__main__':
text = sys.argv[1]
send_msg(text)

 shell脚本

用于检索error.log是否有localpath的失败文件路径,有则调用python脚本通知

 #!/bin/bash
sleep
if [ `grep -i "localpath" cos_migrate_tool_v5-master/log/error.log|wc -l` -gt ];then
DATA="`cat cos_migrate_tool_v5-master/log/error.log | grep "localpath" |sort|uniq`"
python3 dingdingrobot.py "$DATA"
: > cos_migrate_tool_v5-master/log/error.log # 清除之前的错误信息
fi

基本上述代码就可以实现同步结果的钉钉消息推送了。


java的重编译  

腾讯云的start_migrate脚本是运行dep下的cos_migrate_tool-1.0-jar-with-dependencies.jar,同时工程使用Maven进行编译的,所以修改过java代码后,需要使用maven进行重编译。

cos migration工具webhook推送的更多相关文章

  1. 如何让Targetprocess 中 webhook 推送comment 到指定的项目

    Targetprocess 作为Agile管理工具非常好使.我们用TP + bearychat来做任务的沟通. TP目前是不支持comment push到指定的项目,因为其带出的字段中没有相关项目.但 ...

  2. iOS8自定义推送显示按钮及推送优化

    http://www.jianshu.com/p/803bfaae989e iOS8自定义推送显示按钮及推送优化 字数1435 阅读473 评论0 喜欢2 导语 在iOS8中,推送消息不再只是简单地点 ...

  3. 【开源一个小工具】一键将网页内容推送到Kindle

    最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...

  4. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...

  5. jenkins定位GitLab推送的最新Webhook中push event来自哪一个分支

    转载请标明出处:http://www.cnblogs.com/zblade/ 一.调研目的 jenkins可以和GitLab搭档,每当GitLab上有commit的时候,都可以触发jenkins执行相 ...

  6. Pusher 消息推送测试工具

    1.Pusher 简介 Pusher 是一款为 iOS.Mac App 提供推送测试的小工具. 其它下载地址 Pusher v0.7.3 for Mac,密码:p19i. 2.使用方法 使用方法简介 ...

  7. Easy APNs Provider 消息推送测试工具

    1.Easy APNs Provider 简介 Easy APNs Provider 是一款为 iOS.Mac App 提供推送测试的小工具. App Store 下载地址 Easy APNs Pro ...

  8. 【PM面试题】设计一个股价推送工具

    这一轮面试时间比较短,问题在短时间内不能很全面展开,因此抓住一些关键点变得尤其重要,这里我记录下当时是怎么想这个问题的. 问题解析 子问题1:推送什么?从问题中看出我们需要推送的是股价,用户可以自定义 ...

  9. 采集电脑摄像头和mic,rtp端口推送音视频工具

    介绍:这个是我在做一个rtmp播放的项目中自己写的rtp推送的工具,可选择摄像头,可选择推送rtp的端口和ip 下载地址: github:https://github.com/alexhegang/s ...

随机推荐

  1. 获取表单内元素组装成对象类型,方便datagrid的load取参数

    /** * 获取表单数据,并将其转换为对象 */ function getFormObj(formId) { var formObj = {}; var inputs = $('#'+formId). ...

  2. Unity中资源打包成Assetsbundle的资料整理

    最近在研究Unity中关于资源打包的东西,网上看了一堆资料,这里做个整合,说整合,其实也就是Ctrl-C + Ctrl-V,不是原创 首先为了尊重原创,先贴出原创者的文章地址: http://blog ...

  3. 代码改变世界 | 如何封装一个简单的 Koa

    下面给大家带来:封装一个简单的 Koa Koa 是基于 Node.js 平台的下一代 web 开发框架 Koa 是一个新的 web 框架,可以快速而愉快地编写服务端应用程序,本文将跟大家一起学习:封装 ...

  4. MySQL:数据类型介绍

    数据类型介绍 一.整数类型(可以添加自增约束条件) 数据类型 存储需要 有符号 无符号 tinyint 1个字节 -2^7~2^7-1 0~2^8 smallint 2个字节 -2^15~2^15-1 ...

  5. CentOS7+Nginx配置Tomcat负载均衡环境

    1.准备两个Tomcat 配置两个Tomcat一个端口是8080另外一个端口是8081,分别在webapps下面添加一个测试用的web项目,修改index.jsp文件,8080端口的index.jsp ...

  6. Popover 弹出框 设置top,显示有时是向下的,解决方式

    参数里面有个popper-options,官网给的值是{boundariesElement: 'body', gpuAcceleration: false },将这个加上问题就解决了.

  7. 【Python】进程间共享实例

    #练习:进程间共享实例 import time,os import random from multiprocessing import Pool,Value,Lock,Manager from mu ...

  8. 网络协议理论,http协议,数据结构,常用返回码

    一.网络协议理论 先是DNS协议 将域名转化成IP地址 这个你要知道 域名只是人记着方便 计算机记的是IP 然后是TCPIP协议 数据在传输过程中可能要经过陆游器 涉及到的是ARP协议 将IP地址转换 ...

  9. 基于链路的OSPFMD5口令认证

    实验要求:掌握基于链路的OSPFMD5口令认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1 ...

  10. JavaScript中的内置对象-8--2.String-符串对象 方法; 截取方法; 综合应用; 其他方法;

    JavaScript内置对象-2String(字符串) 学习目标 1.掌握字符串对象 方法: charAt() charCodeAt() indexOf() lastIndextOf() charAt ...