通过shell+python实现企业微信预警


Posted in Python onMarch 07, 2019

一 注册企业微信

本文所有内容是基于2018年12月26日时的企业微信版本所做的教程。后面可能由于企业微信界面规则更改导致部分流程不一致。(大家看文章时请注意这一点)

注册企业微信必备条件

  • 微信号(实名认证了)
  • 手机号

之前我有个误区,就是以为注册企业微信就一定要有营业执照之类的证件才可以注册,实际是不需要也可以的,因为我们直接注册后,即使不绑定企业,我们也是可以正常使用的,未绑定实际企业的,有200人的数的上限(难道你们技术部有200人?不存在的,哈哈!)

注册

注册链接:企业微信

通过shell+python实现企业微信预警

企业名称可以随便填,建议填真实的啊,其他的你就按照实际情况填了。

二 创建消息

创建部门

首先我们需要创建一个部门,然后将成员添加到一个部门里面

通过shell+python实现企业微信预警

邀请成员加入

我们可以在首页点击进行邀请。

通过shell+python实现企业微信预警

也可以在选中要添加的部门后再选右边的添加成员或者微信邀请。

通过shell+python实现企业微信预警

创建应用

通过shell+python实现企业微信预警

创建的时候指定下可以接收的消息的部门

通过shell+python实现企业微信预警

关注微工作平台

在我的企业 ---》 微工作平台 ---》邀请关注

通过shell+python实现企业微信预警

三 实现预警

在完成的上面的所有准备工作后,我们还需要获取三个东西 :

1 企业ID

2 获取应用ID和Secret

获取企业ID

通过shell+python实现企业微信预警

获取应用ID和Secret

通过shell+python实现企业微信预警

通过shell 脚本实现监控预警

该shell 脚本实现的功能: 检测端口是否在监听状态,不在则进行微信预警。

#!/bin/bash
###############
#$Auth= djx
#$Function= monitoring service
#Date= 2018-12-26
###############
# 日志储存文件
log_file='/var/log/ljf_status.log'
# 主机名
hostname=`hostname`
# 监听的端口数组
check_port=("3306" "3329" "4567")
# 数组长度
num=${#check_port[*]}
# 报警消息
msg=""
echo "--------------------------$(date +%F_%T)-----------------" >>$log_file

for i in `seq 0 $num`
do
  netstat -tnlp|grep "${check_port[${i}]}" >>/dev/null
  if [ $? -ne 0 ]
  then
    msg="\\n${hostname}:The Port ${check_port[${i}]} is down \\n"${msg}
    echo "$(date +%F_%T) ${hostname}:The Port ${check_port[${i}]} is down">>$log_file
  fi
done
if [ "${msg}" != "" ]
then
  CropID=""  #填入企业ID值
  Secret=""  #填入认证密码
  GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 
  # 获取token
  Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}') 
  PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" 
  body='{
  "touser": "@all",
  "msgtype": "text",
  "agentid": "1000002", #要更改为我们的应用ID
  "text":{
     "content":"
  故障:'$msg' "
       },
  "safe":0
  }'
  /usr/bin/curl --data-ascii "$body" $PURL >>$log_file 2>&1
fi

通过python 脚本实现监控预警

由于centos7和centos6 默认安装的都是python2版本,所以下面的脚本是基于python2写的,这样我们就可以直接拿到我们的服务器上使用了。

# -*- coding: utf-8 -*-
# @Time  : 2018/12/27 0021 11:58
# @Author : djx
# @Email  : 1120236774@qq.com
# @File  : 微信预警脚本.py
# @Software: PyCharm
import os
import time
import urllib2
import json


# 企业号ID
wxid = ""
# 应用ID
depid = ""
# 认证密码
secret = ""
# 获取主机的名称
hostname = os.popen("hostname").read()
# 日志储存文件
log_file = '/var/log/ljf_status.log'
# 监听的端口列表
check_port = (
  "8500",
  "3306")
# 发送的消息
msg = ""
# 获取当前的时间
date_time = time.strftime("%Y-%m-%d %X")
# 检查端口是否在监听
for i in check_port:
  shell = "netstat -nutlp |grep \"" + i + "\""
  recv = os.popen(shell).read()
  if recv == "":
    msg = msg + hostname + ": The Port " + i + "is down \n"
# 预警判断
if msg != "":
  url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + \
    wxid + "&corpsecret=" + secret
  request = urllib2.Request(url)
  response = urllib2.urlopen(request)
  recv_info = response.read()
  recv_info = eval(recv_info) 
  wx_token = recv_info['access_token']
  msg_url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + wx_token
  send_msg = {
    "touser": "@all",
    "msgtype": "text",
    "agentid": depid,
    "text": {"content": msg},
    "safe": 0
  }
  send_msg_json = json.dumps(send_msg)
  request_post = urllib2.urlopen(msg_url,send_msg_json)
  recv_msg = request_post.read()
  with open(log_file,mode='a') as f:
    f.write(date_time)
    f.write("\n")
    f.write(msg)
    f.write(recv_msg)
    f.write("\n")

上面的脚本也可以应用在zabbix或者是Open-falcon。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python通过自定义isnumber函数判断字符串是否为数字的方法
Apr 23 Python
分析Python中设计模式之Decorator装饰器模式的要点
Mar 02 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
python地震数据可视化详解
Jun 18 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
Jul 23 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
python中的TCP(传输控制协议)用法实例分析
Nov 15 Python
python 并发下载器实现方法示例
Nov 22 Python
使用Bazel编译TensorBoard教程
Feb 15 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
M1芯片安装python3.9.1的实现
Feb 02 Python
Python一个简单的通信程序(客户端 服务器)
Mar 06 #Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 #Python
Python二叉树的镜像转换实现方法示例
Mar 06 #Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 #Python
Python中一般处理中文的几种方法
Mar 06 #Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 #Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 #Python
You might like
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php 无限级缓存的类的扩展
2009/03/16 PHP
smarty模板数学运算示例
2016/12/11 PHP
javascript实现轮显新闻标题链接
2007/08/13 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery实现简单二级下拉菜单
2015/04/12 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
Vue header组件开发详解
2018/01/26 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
python2.7 json 转换日期的处理的示例
2018/03/07 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
详解python配置虚拟环境
2019/04/08 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Python ini文件常用操作方法解析
2020/04/26 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
精美的手工家居和生活用品:Nkuku
2019/11/01 全球购物
init进程的作用
2015/08/20 面试题
实习教师自我鉴定
2013/09/27 职场文书
财务主管岗位职责
2014/02/28 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
外出听课学习心得体会
2016/01/15 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
JS前端使用canvas实现物体的点选示例
2022/08/05 Javascript