当前位置: 首页 > article >正文

Python应用实战--制作网络稳定性监控自动化脚本

文章目录

    • Python应用实战---制作网络稳定性监控自动化脚本
    • 实战出发点
    • 一、技术实现规划
    • 二、python代码实现
    • 三、创建bat文件
    • 四、创建自动运行任务
        • 1、打开windows任务计划程序
        • 2、创建基本任务
        • 3、配置任务
    • 小结

Python应用实战—制作网络稳定性监控自动化脚本

实战目标:利用python语言编写自动化脚本实时监控当前计算机网络状态并记录状态

实战出发点

在工业自动化应用中当有网络不稳定或延迟时,有可能造成自动化设备的报警或停机故障,但在实际处理故障时往往故障出现呈现随机性导致无法快速定位故障点;本实战目标为在计算机设备中加入自动监控网络状态脚本,实时记录网络状态,当出现设备故障停机时可查看网络监控文本用于辅助检查网络中各设备的通讯状态;

一、技术实现规划

检查网络状态可以使用cmd命令行的Ping命令,但是ping命令虽然可以检查网络状态,但是无法将记录保存,日志不可以追溯
python拥有很多模块可以与操作系统进行交互,并获取操作系统的信息
1、通过python的subprocess模块实现与操作系统的交互
2、通过re模块使用正则表达式从系统反馈的文本中提取关键信息
3、通过自定义的csv格式代码将记录改写为表格形式以在excel中实现信息的筛选
4、在windows系统上创建bat自动化运行文件
5、在windows系统上创建并配置自动运行任务

二、python代码实现

import datetime
import subprocess
import re
import argparse
import sys


# -----1 test network
def check_network(ip_address: str,
                  file_path: str = r'C:\Users\reedi\Desktop\Python_code\project\network_monitor\network_mon.csv') -> None:
    _cmd = f'ping {ip_address} -t'
    _match_ip = re.compile(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}')
    _match_bytes = re.compile(r'\s..=(\d+)\s')
    _match_time = re.compile(r'.\d+ms')
    _match_ttl = re.compile(r'TTL=(\d+)')
    _subprocess = subprocess.Popen(_cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE, text=True)
    try:
        while True:
            try:
                line = _subprocess.stdout.readline()
                if not line:
                    break
                else:
                    _ip_str = _match_ip.search(line)
                    _bytes_str = _match_bytes.search(line)
                    _time_str = _match_time.search(line)
                    _ttl_str = _match_ttl.search(line)
                    if _ip_str and _bytes_str and _time_str and _ttl_str:
                        _str_list = map(str, [datetime.datetime.now(), _ip_str.group(), _bytes_str.group(1),
                                              _time_str.group(), _ttl_str.group(1)])
                        _csv_str = ','.join(_str_list)
                        print(f'{datetime.datetime.now()}: {line.strip()}')
                        write_to_file(_csv_str, file_path)
            except PermissionError:
                print(f'PermissionError: can not write to file {file_path}')
            except Exception as e:
                print(f'Error: {e}')

    finally:
        _subprocess.stdout.close()
        _subprocess.stderr.close()
        _subprocess.wait()


# -----2 write result to file
def write_to_file(content: str, file_name: str = 'check_network_log.csv') -> None:
    with open(file_name, 'a', encoding='utf-8') as file:
        file.write(f'{content}\n')


if __name__ == '__main__':
    if len(sys.argv) > 1:
        print(f'run check_network function with command line arguments')
        parser = argparse.ArgumentParser(description='Check network connectivity by pinging a specified IP address.')
        parser.add_argument('ip_address', type=str, help='The IP address to ping.')
        parser.add_argument('file_path', type=str, help='The path to the log file.')
        args = parser.parse_args()
        check_network(args.ip_address, args.file_path)
    else:
        print(f'run check_network function with default parameters')
        check_network('192.168.0.10', r'C:\Users\reedi\Desktop\Python_code\project\network_monitor\network_mon.csv')


三、创建bat文件

@echo off
start /B python C:\Users\reedi\Desktop\Python_code\project\network_monitor\check_network.py 192.168.0.10 C:\Users\reedi\Desktop\Python_code\project\network_monitor\network_mon.csv
pause

需要根据文件放置的位置重新配置文件地址及更新IP地址

最终文件如下图所示:

在这里插入图片描述

四、创建自动运行任务

1、打开windows任务计划程序

win+r 打开运行程序,输入taskschd.msc
在这里插入图片描述

2、创建基本任务

在这里插入图片描述

3、配置任务

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

1、自动任务完成后需要触发条件才能运行,如果想直接运行可以在任务计划程序库里直接查看任务状态,并右击运行
在这里插入图片描述

2、当创建的python脚本中有异常出现故障未处理时任务会自动停止,需要手动点击重新启动,但需要排除脚本故障否则仍会停止
3、python写入文件代码操作较简单未使用python csv模块,最终文件未生成列名及控制文件占用大小,复杂应用建议使用csv模块进行覆写
4、当自动化脚本运行过程中打开csv文件会导致脚本写入权限占用,需要关闭csv文件后脚本自动继续运行
5、生成的csv文件可以在vs code中打开,但可能显示为文本格式,如需要显示为表格可以安装csv显示插件,也可以在excel中直接打开为表格形式
在这里插入图片描述


http://www.kler.cn/a/417419.html

相关文章:

  • 基础相对薄弱怎么考研
  • Win32 学习笔记目录
  • systemverilog的program和module的区别
  • Pytest+selenium UI自动化测试实战实例
  • react18新增了哪些特性
  • CSS的媒体查询语法
  • 电商项目--分布式文件存储FastDFS搭建
  • 游戏引擎学习第28天
  • 基于JSP+MySQL的网上招聘系统的设计与实现
  • Hive 数据模型 与 Hive SerDe(序列化与反序列化)
  • web安全攻防入门教程
  • 计算机毕业设计PySpark+Scrapy农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop
  • 复杂网络(四)
  • 爱尔兰杀菌剂数据分析_1
  • Figma入门-组件变体
  • 速盾:高防cdn的搜索引擎回源是什么?
  • 5G基础学习笔记
  • vscode的项目给gitlab上传
  • [免费]SpringBoot+Vue景区订票(购票)系统【论文+源码+SQL脚本】
  • Jenkins构建gitlab自动发布IIS
  • SE16N 外键校验报错问题
  • 软件工程之动态建模
  • Flutter:列表分页,上拉加载下拉刷新,在GetBuilder模板使用方式
  • 鸿蒙NEXT元服务:收藏、卡片、用户协议、隐私声明、分享链接、评分与评论
  • Deepnote、JupyterLab、Google Colab、Amazon SageMaker、VS Code对比
  • IDEA自定义帆软函数步骤详解