通过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使用百度翻译进行中翻英示例
Apr 14 Python
Python计算三维矢量幅度的方法
Jun 15 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
Python实现图片转字符画的示例
Aug 22 Python
DataFrame中的object转换成float的方法
Apr 10 Python
python读取文本绘制动态速度曲线
Jun 21 Python
python七夕浪漫表白源码
Apr 05 Python
Python 监测文件是否更新的方法
Jun 10 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
python爬虫模拟浏览器访问-User-Agent过程解析
Dec 28 Python
Numpy一维线性插值函数的用法
Apr 22 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 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
如何使用PHP中的字符串函数
2006/10/09 PHP
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
php如何解决无法上传大于8M的文件问题
2014/03/10 PHP
php将日期格式转换成xx天前的格式
2015/04/16 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
PHP 爬取网页的主要方法
2018/07/13 PHP
JS图片预加载 JS实现图片预加载应用
2012/12/03 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
jquery实现select选中行、列合计示例
2014/04/25 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[02:04]2016国际邀请赛中国区预选赛VG.R晋级之路
2016/07/01 DOTA
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
python循环定时中断执行某一段程序的实例
2019/06/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python实现简单图书管理系统
2019/11/22 Python
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
交通文明倡议书
2014/05/16 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书