写在前面的话

目前换了几家公司,且最近几家都是以钉钉作为公司 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. 第六篇 VIM你值得拥有!

    vim 是一个具有很多命令的功能非常强大的编辑器.限于篇幅,在本教程当中      就不详细介绍了.本教程的设计目标是讲述一些必要的基本命令,而掌握好这      些命令,您就能够很容易将vim当作一 ...

  2. 用Azure上Cognitive Service的Face API识别人脸

    Azure在China已经发布了Cognitive Service,包括人脸识别.计算机视觉识别和情绪识别等服务. 本文将介绍如何用Face API识别本地或URL的人脸. 一 创建Cognitive ...

  3. VMware tools的使用

    现在的开发环境基本上都是lnmp,所以我们需要在windows下使用虚拟机来搭建开发环境, 但是 在本地写好代码以后,需要上传到虚拟机的运行目录,每次修改都需要上传??? 不存在的!!! 使用Vmwa ...

  4. PHP Warning: Module 'modulename' already loaded in Unknown on line 0 的解决方法

    今天无间断服务加载php-fpm时,爆出了一个错误:PHP Warning:  Module 'xhprof' already loaded in Unknown on line 0 <br / ...

  5. UVA548(二叉树遍历)

    You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...

  6. 第 十五 课 Go 语言范围(Range)

    Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素 package main import "fmt ...

  7. Oracle 多表查询(1)

    一.基本概念 多表查询的语法如下: SELECT [DISTINCT] * | 字段 [别名] [,字段 [别名] ,…]FROM 表名称 [别名], [表名称 [别名] ,…][WHERE 条件(S ...

  8. 使用like查询text类型字段

    使用like查询text类型字段 public bool Exists(GetReadType GRT, ClientMessageGetRead TypeID, string MessageID, ...

  9. Monitoring tools that everyone's currently using

    Although a lot of new tools have arrived since 2011, it's clear that older open source tools like Na ...

  10. WPA密码攻击宝典

    原则:密码以8-10位为主.11位仅限于当地手机号.一般人的多年用数字做密码的习惯和心理,先数 字.再字母,或数字.字母重复几遍,字符几乎全用小写,所以淘汰大写及"~!@#$%^&* ...