通过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 18 Python
深入浅析python定时杀进程
Jun 06 Python
Python实现删除列表中满足一定条件的元素示例
Jun 12 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python实现学生信息管理系统
Apr 05 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
Tensorflow分批量读取数据教程
Feb 07 Python
Python数据可视化图实现过程详解
Jun 12 Python
python - timeit 时间模块
Apr 06 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 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
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
2013/06/01 PHP
thinkphp 一个页面使用2次分页的实现方法
2013/07/15 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
PHP实现多关键字加亮功能
2016/10/21 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
JS访问对象两种方式区别解析
2020/08/29 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Numpy数据类型转换astype,dtype的方法
2018/06/09 Python
python pygame实现方向键控制小球
2019/05/17 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
Python集合操作方法详解
2020/02/09 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
小学生思想品德评语
2014/12/31 职场文书
大学生入党自传2015
2015/06/26 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
素质教育学习心得体会
2016/01/19 职场文书
导游词之崇武古城
2019/10/07 职场文书
delete in子查询不走索引问题分析
2022/07/07 MySQL
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技