服务器在线 - 服务器软件 - 网站地图 服务器在线,专注于服务器技术!

当前位置:主页 > 编程脚本 > Python > 正文

python监控ip地址Ping不通时通过企业微信通知

时间:2022-07-29    来源:未知    投稿:admin    点击:

# -*- coding:utf-8 -*-
import os
import xlrd2
import json
import requests


class WeChatPub():

    def __init__(self,corpid='wwdfae11037b',secret='UXI1ZwgSkNCTLICdjzobqd5CMyU'):
        self.req = requests.session()
        self.token = self.get_token(corpid, secret)
        print("token is " + self.token)

    def get_token(self, corpid, secret):
        url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={0}&corpsecret={1}".format(corpid, secret)
        response = self.req.get(url)
        if response.status_code == 200:
            access_token=json.loads(response.content)['access_token']
            return access_token
        else:
            print("request failed.")
            return None

    def send_msg(self, content):
        url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + self.token
        header = {
            "Content-Type": "application/json"
        }
        form_data = {
            "touser": "@all",
            "toparty": " PartyID1 | PartyID2 ",
            "totag": " TagID1 | TagID2 ",
            "msgtype": "textcard",
            "agentid": 1000002,
            "textcard": {
                "title": "告警通知",
                "description": content,
                "url": "URL",
                "btntxt": "更多"
            },
            "safe": 0
        }
        data=json.dumps(form_data).encode('utf-8')
        rep = self.req.post(url, data=data, headers=header)
        if rep.status_code == 200:
            return json.loads(rep.content)
        else:
            print("request failed.")
            return None

data = xlrd2.open_workbook(os.path.join('/data/monitor.xlsx'))
table = data.sheets()[0] #选取要读的sheet表单
nrows = table.nrows

if __name__ == '__main__':
    for i in range(nrows):
        if i == 0:
            continue
        print(table.row_values(i))
        t = os.system('ping ' + table.row_values(i)[1] + ' -c 5')
        if t == 0:
            pass
        else:
            print(table.row_values(i)[1] + "网络中断")
            wechat = WeChatPub()
            msg='''<div class=\"normal\">IP地址:''' + table.row_values(i)[1] +'''</div>
            <div class=\"normal\">数据中心:''' + table.row_values(i)[3] +'''</div>
            <div class=\"normal\">用户名称:''' + table.row_values(i)[0] +'''</div>
            <div class=\"normal\">检测方式:''' + table.row_values(i)[2] +'''</div>
            <div class=\"highlight\">告警类型:IP地址网络中断</div>'''
            wechat.send_msg(msg)

如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。


相关内容
最新热点内容