Python实现自动检测设备连通性并发送告警到企业微信

背景:门禁机器使用的WiFi连接,因为某些原因会不定期自动断开连接,需要人工及时干预,以免影响门禁数据同步,故写此脚本,定时检测门禁网络联通性。

bash 复制代码
#首次使用要安装tcping模块
pip install tcping
bash 复制代码
from tcping import Ping
import csv
from datetime import datetime
import requests, json

def SendWeiXinWork(user,context):
    corpid='填企业ID' #企业ID
    appsecret='填secret'  #secret
    agentid=填AgentID  #AgentID
    #获取accesstoken
    token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
    req=requests.get(token_url)
    accesstoken=req.json()['access_token']
    #发送消息
    msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
    touser=user
    params={
            "touser": touser,
    #       "toparty": toparty,
            "msgtype": "text",
            "agentid": agentid,
            "text": {
                    "content": context
            },
            "safe":0
    }
    req=requests.post(msgsend_url, data=json.dumps(params))
 

 
def pingip(ipAddress,request_nums):
    """
    ping ip
    :param ipAddress:
    :param request_nums: 请求次数
    :return: 丢包率loss和统计结果res
    """
    ping = Ping(ipAddress,3718,3)#3718是端口号,我的门禁机器只有这个端口号可以ping通
    ping.ping(request_nums)
    res = ping.result.table
    ret = ping.result.raw
    retlist = list(ret.split('\n'))
    loss = retlist[2].split(',')[3].split(' ')[1]  # 获取数据包发送成功率
    return loss, res
     
def main():

    # 获取待ping的设备地址信息
    with open('C:\\Users\\Junson\\Desktop\\Script\\巡检\\门禁\\门禁设备列表.csv','r') as ipList_csv:
        ipList = csv.reader(ipList_csv)
        next(ipList)    #跳过首行
        for ipAddress in ipList:
            
            # 调用pingip方法得到数据包发送成功率
            loss, res = pingip(ipAddress[0], 4)
            if float(loss.strip('%')) / 100 <= 0.3:   # 0.3为自定义数据包丢包率阈值,可修改

                #数据包发送成功率低于30%时,发送消息到企微机器人
                SendWeiXinWork('@all','%s %s无法ping通,请检查设备的网络连接!'%(ipAddress[0],ipAddress[1]))
                
                #记录日志
                file_handle=open('C:\\Users\\Junson\\Desktop\\Script\\巡检\\门禁\\log.txt',mode='a')
                file_handle.write('\n%s   %s   %s无法ping通,请检查设备的网络连接!'%(datetime.now(),ipAddress[0],ipAddress[1]))
                file_handle.close()
            else:
                #记录日志
                file_handle=open('C:\\Users\\Junson\\Desktop\\Script\\巡检\\门禁\\log.txt',mode='a')
                file_handle.write('\n%s   %s   %sping访问正常。'%(datetime.now(),ipAddress[0],ipAddress[1]))
                file_handle.close()
                
 
if __name__ == '__main__':
    #实现服务器网络状态监控
    
    main()
    pass

csv文件结构

创建计划任务:

最终效果:

相关推荐
小蒜学长4 分钟前
python餐厅点餐系统(代码+数据库+LW)
数据库·spring boot·后端·python
山土成旧客5 分钟前
【Python学习打卡-Day34】GPU为何“变慢”?从性能悖论到`__call__`的魔力
开发语言·python·学习
水龙吟啸8 分钟前
项目设计与开发:智慧校园食堂系统
python·机器学习·前端框架·c#·团队开发·visual studio·数据库系统
极客小云13 分钟前
【IEEE Transactions系列期刊全览:计算机领域核心期刊深度解析】
android·论文阅读·python
じ☆冷颜〃23 分钟前
基于多数据结构融合的密码学性能增强框架
数据结构·经验分享·笔记·python·密码学
无所事事的海绵宝宝26 分钟前
python基础
开发语言·python
dagouaofei29 分钟前
实测!6款AI自动生成PPT工具体验分享
人工智能·python·powerpoint
Font Tian29 分钟前
Pandas 3.0 全解:从默认字符串类型到 Copy-on-Write 的一场“内存模型重构”
python·重构·数据分析·pandas
轻竹办公PPT32 分钟前
写 2026 年工作计划,用 AI 生成 PPT 哪种方式更高效
人工智能·python·powerpoint
大模型铲屎官36 分钟前
【操作系统-Day 47】揭秘Linux文件系统基石:图解索引分配(inode)与多级索引
linux·运维·服务器·人工智能·python·操作系统·计算机组成原理