写在前面的话

目前换了几家公司,且最近几家都是以钉钉作为公司 OA 聊天工具,总的来说还是很不错的。最近去了新公司,由于公司以前没有运维,所以监控,做自动化等方面都没有实施,恰逢这个机会把最近做的关于用到钉钉机器人的一些东西写出来,希望能够帮到和我有同样需求的兄弟,少走一些弯路!

目前个人钉钉机器用在了两个方面:

一是 Zabbix 监控告警,使用的是 Python 编写的脚本,且目前也在写关于 Zabbix 的文档,有兴趣的小伙伴可以到我主页看看!

二是 Jenkins 自动发布,在构建后执行 Shell 过程中加入一系列的钉钉机器人消息提醒!

添加钉钉机器人

目前个人已知的钉钉机器人只能存在于钉钉群,钉钉群的建群需求是至少 人,当然,你建群之后可以把其它人踢出去,我就是这样干的,谁让我们只有两个人呢 ...

【1】首先,我们进入一个钉钉群创建我们的机器人:

【2】目前钉钉已经存在了一些项目的机器人,你可以根据自己的选,当然,我们本次就用自定义的,添加一个名为 HELLO ROBOT 机器人:

【3】 机器人添加完成,会生成一个 webhook,这是你上传数据接口,同时这个接口也代表着该机器人的身份标识,相当重要!

【4】添加完成后,机器人会在群里发送一条消息,还有点阔爱:

发送消息脚本(Linux Shell)

对于消息在钉钉群中的显示格式以及更多的关于钉钉机器人的开发文档说明,可以查看官方给的开发者文档:

https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.oAAN7T&treeId=257&articleId=105733&docType=1

以下是 Linux Shell 脚本,个人选择的是钉钉消息的 ActionCard 格式:

#!/bin/bash 

function SendMessageToDingding(){
Dingding_Url="这就是刚刚机器人的 webhook xxxxxxxx"
# 发送钉钉消息
curl "${Dingding_Url}" -H 'Content-Type: application/json' -d "
{
\"actionCard\": {
\"title\": \"$1\",
\"text\": \"$2\",
\"hideAvatar\": \"0\",
\"btnOrientation\": \"0\",
\"btns\": [
{
\"title\": \"$1\",
\"actionURL\": \"\"
}
]
},
\"msgtype\": \"actionCard\"
}"
} Subject="$1" Body="$2" SendMessageToDingding $Subject $Body

备注:我们这里传递了两个参数,当然,你也可以根据自己的需求选择消息类型,定制参数,都是 Shell 的基础知识,比较简单!

最后,我们可以放在机器上面测试一下,下面是我的效果:

注意,由于 Linux 多行的值赋值给一个变量的时候,换行符需要转义,还有就是 Zabbix 触发动作里面内容一定不定有空格,这都是 shell post json 的大坑! 

Zabbix 监控告警的效果:

小结

使用 Shell 发送很简单,其实就是提交 JSON 数据,但是 Shell 提交 JSON 感觉有点恶心,后续我会把 Python 脚本脚本也发出来,希望能够帮到各位!

运维利器:钉钉机器人脚本告警(Linux Shell 篇)的更多相关文章

  1. 运维利器:钉钉机器人脚本告警(Linux Python 篇)

    写在前面的话 在前面的博客中已经具体提到了如何获取对的机器人的 Token 等操作,不清楚的可以参考之前写的 [运维利器:钉钉机器人脚本告警(Linux Shell 篇)]这篇博客的前部分. 本文主要 ...

  2. 如何高效地远程部署?自动化运维利器 Fabric 教程

    关于 Python 自动化的话题,在上一篇文章中,我介绍了 Invoke 库,它是 Fabric 的最重要组件之一.Fabric 也是一个被广泛应用的自动化工具库,是不得不提的自动化运维利器,所以,本 ...

  3. 运维利器-ClusterShell集群管理操作记录

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  4. 运维利器-ClusterShell集群管理

    在运维实战中,如果有若干台数据库服务器,想对这些服务器进行同等动作,比如查看它们当前的即时负载情况,查看它们的主机名,分发文件等等,这个时候该怎么办?一个个登陆服务器去操作,太傻帽了!写个shell去 ...

  5. 运维工程师必会的109个Linux命令

    运维工程师必会的109个Linux命令 版本1.0 崔存新 更新于2009-12-26 目录 1 文件管理 6 1.1 basename 6 1.2 cat 6 1.3 cd 7 1.4 chgrp ...

  6. Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Discuz!

    Nginx+Lua+Redis整合实现高性能API接口 - 网站服务器 - LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! - Powered by Disc ...

  7. Linux运维面试题:请简要说明Linux系统在目标板上的启动过程?

    Linux运维面试题:请简要说明Linux系统在目标板上的启动过程? 该问题是Linux运维面试最常见的问题之一,问题答案如下: 1.用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备( ...

  8. python为运维人员打造一个监控脚本

    0x00前言: 一直想写一个监控方面的脚本,然后想到了运维这方面的 后来就写了个脚本. 0x001准备: psutil模块 0x02正文: import os import time import r ...

  9. 数据库(Oracle)运维工作内容及常用脚本命令

    1.系统资源状况:--内存及CPU资源  --linux,solaris,aix    vmstat 5  --说明:    1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来 ...

随机推荐

  1. 获得Oracke中刚插入的ID ---> GetInsertedID()

    (1)首先 需要创建序列: CREATE SEQUENCE SE_TD_POWER MINVALUE 1 NOMAXVALUE START WITH 1 INCREMENT BY 1 NOCYCLE ...

  2. C语言 字符串中数字的运算

    主函数中输入字符串"32486"和"12345",在主函数中输出的函数值为44831. #include <stdio.h> #include &l ...

  3. HDU4039(map应用)

    The Social Network Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)T ...

  4. Oracle data guard学习

    Oracle data guard学习:三思笔记 Data guard 1data guard结构: data guard是一个集合,由一个primary数据库(生产数据库)和一个或多个standby ...

  5. json 工具处理类

    package com.js.ai.modules.pointwall.util; import java.lang.reflect.Type; import java.net.URLDecoder; ...

  6. 开发环境入门 linux基础 (部分)nginx和nfs

    nginx和nfs 复习总结 rpm -ivh 软件包 --nodeps (没有依赖性安装) rpm -ivh 软件包 --force (覆盖安装) yum -y upgrade 升级所有包,不改变软 ...

  7. MySessionFactory

    package com.ORM; import org.hibernate.HibernateException; import org.hibernate.Session; import org.h ...

  8. IntelliJ IDEA 导入Project

    一.方式一 File---->Close Project 这样的户每次需要import,都要close一次,非常不方便,如果能在File下面岂不是更好? 二.方式二 File---->Se ...

  9. hadoop再次集群搭建(1)-安装系统

    从8月份到现在12月份,中间有四个月的时间没有学习hadoop系统了.其实适应新的环境,到现在一切尘埃落定,就应该静下心来,好好学习一下hadoop以及我之前很想学习的mahout.个人对算法比较感兴 ...

  10. matlab学习笔记(4)

    第9章 数学建模函数 曲线拟合: 多项式拟合: polyfit()函数:采用最小二乘法进行多项式拟合. polyfit(x,y,n);   %对于数据集[x,y],找到次数为n的多项式. [p E] ...