2分钟搞定全网巡检:一个脚本+五大必备 Python 库,让你一天干别人一周的活 2分钟搞定全网巡检一个脚本五大必备 Python 库让你一天干别人一周的活大家好我是你们的老朋友一名在运维圈摸爬滚打多年的技术博主。今天我要分享一个“偷懒”秘籍——用 Python 写一个全网巡检脚本2 分钟搞定原本需要一整天的活儿。别不信这背后是五大 Python 库的功劳它们就像你的“超级工具包”让网络设备巡检变得像点外卖一样简单。这篇文章会带你从零开始用代码示例一步步实现保证你看完就能上手。### 为什么全网巡检这么耗时间先说说痛点。在网络运维中巡检是日常任务检查路由器、交换机、防火墙的状态比如 CPU 使用率、内存占用、接口流量等。传统做法是手动 SSH 登录到每台设备敲命令、记录结果、再导出报表。如果你有 100 台设备每台花 5 分钟那就是 500 分钟差不多一整天。更别提设备类型不同、命令不同还得手动处理异常。累不累累但有了 Python我们可以自动化这一切。### 五大 Python 库你的巡检“神器”要让脚本跑起来我们需要五个关键库。它们各司其职像一支特种部队1.ParamikoSSH 连接专家负责远程登录设备并执行命令。2.Netmiko基于 Paramiko 的“升级版”专门简化网络设备操作支持 Cisco、华为、H3C 等主流品牌。3.Pandas数据处理大师把巡检结果整理成表格方便导出为 Excel 或 CSV。4.OpenpyxlExcel 操作员直接生成格式化的报表不用手动复制粘贴。5.Schedule定时任务管家让脚本自动每天、每周跑一次彻底解放双手。这些库安装很简单用pip install paramiko netmiko pandas openpyxl schedule一键搞定。接下来我们直接上代码。### 代码示例 1用 Netmiko 连接一台设备并获取基本信息我们先从最简单的开始——连接一台 Cisco 交换机获取它的主机名和运行时间。Netmiko 的封装让 SSH 操作变得极其直观。python# 导入 Netmiko 库from netmiko import ConnectHandler# 定义设备连接参数device { device_type: cisco_ios, # 设备类型这里是 Cisco IOS host: 192.168.1.1, # 设备 IP 地址 username: admin, # 用户名 password: password123, # 密码生产环境建议用密钥 port: 22, # SSH 端口}try: # 建立 SSH 连接 connection ConnectHandler(**device) print(f成功连接到 {device[host]}) # 发送命令并获取输出 output connection.send_command(show version | include uptime) print(设备运行信息) print(output) # 关闭连接 connection.disconnect() print(连接已关闭)except Exception as e: print(f连接失败{e})运行结果你会看到类似Cisco IOS Software, Version 15.2(7)E, uptime is 2 weeks, 3 days, 14 hours, 22 minutes的信息。这只是开始我们还可以用send_command获取接口状态、路由表等。### 代码示例 2批量巡检多台设备并生成 Excel 报表现在我们把规模扩大到全网。假设你有一个设备列表IP 地址和类型脚本会自动巡检每台设备检查 CPU 使用率和内存占用然后输出到一个 Excel 文件。这里用到了 Netmiko、Pandas 和 Openpyxl。pythonimport pandas as pdfrom netmiko import ConnectHandlerfrom datetime import datetime# 模拟设备列表实际可从 CSV 或配置文件读取devices [ {host: 192.168.1.1, device_type: cisco_ios, username: admin, password: password123}, {host: 192.168.1.2, device_type: cisco_ios, username: admin, password: password123}, {host: 192.168.1.3, device_type: cisco_ios, username: admin, password: password123},]# 用于存储结果的列表results []for device in devices: try: # 连接设备 conn ConnectHandler(**device) print(f正在巡检 {device[host]}...) # 获取 CPU 使用率Cisco 命令 cpu_output conn.send_command(show processes cpu | include CPU utilization) cpu_percent cpu_output.split(%)[0].split()[-1] # 提取百分比 # 获取内存信息 mem_output conn.send_command(show memory statistics | include Processor) mem_parts mem_output.split() total_mem mem_parts[4] # 总内存KB used_mem mem_parts[5] # 已用内存KB # 记录结果 results.append({ IP: device[host], 巡检时间: datetime.now().strftime(%Y-%m-%d %H:%M:%S), CPU 使用率 (%): cpu_percent, 总内存 (KB): total_mem, 已用内存 (KB): used_mem, }) conn.disconnect() except Exception as e: print(f设备 {device[host]} 巡检失败{e}) results.append({ IP: device[host], 巡检时间: datetime.now().strftime(%Y-%m-%d %H:%M:%S), CPU 使用率 (%): Error, 总内存 (KB): Error, 已用内存 (KB): Error, })# 用 Pandas 创建 DataFrame 并导出为 Exceldf pd.DataFrame(results)excel_file fnetwork_check_{datetime.now().strftime(%Y%m%d_%H%M)}.xlsxdf.to_excel(excel_file, indexFalse, engineopenpyxl)print(f巡检完成结果已保存到 {excel_file})运行效果脚本会依次连接 3 台设备抓取数据然后生成一个 Excel 文件里面包含每台设备的 CPU、内存信息。如果有设备连不上也会标记为 “Error”方便你排查。### 进阶技巧用 Schedule 定时自动巡检手动运行脚本还是不够“懒”。我们可以用 Schedule 库让脚本每天凌晨 2 点自动执行生成日报表。pythonimport scheduleimport timedef job(): print(开始每日巡检...) # 这里直接复用上面的代码逻辑 # 为了简洁我用注释代替实际代码 # 你把示例2的代码封装成一个函数比如 run_check() # run_check() print(巡检完成)# 每天凌晨 2 点执行schedule.every().day.at(02:00).do(job)while True: schedule.run_pending() time.sleep(60) # 每分钟检查一次这样你只需部署到服务器上每天起床就能看到最新的巡检报表。一天干别人一周的活不是梦。### 总结通过一个简单的 Python 脚本和五大库Paramiko/Netmiko、Pandas、Openpyxl、Schedule我们实现了全网巡检的自动化。从手动登录到批量处理从纯文本到 Excel 报表整个过程只需 2 分钟脚本执行时间就能搞定而手动做可能需要一整天。这背后是 Python 的灵活性和生态的强大。最后几点建议-安全第一生产环境中密码建议用密钥或加密存储避免硬编码。-扩展性你可以添加更多巡检项如接口流量、错误计数器或集成告警功能如发送邮件。-错误处理网络设备可能不稳定多加点 try-except 和重试机制。现在打开你的终端装好库试试这个脚本吧如果你有任何问题或优化想法欢迎留言交流。下次见让我们都做个“懒”得聪明的运维人

相关新闻

最新新闻

Python脚本打包成exe与GUI界面开发实战指南

Python脚本打包成exe与GUI界面开发实战指南

1. 从脚本到应用:为什么我们需要打包与UI如果你用Python写过一些实用的小工具,比如一个批量重命名文件的脚本,或者一个自动整理桌面文档的程序,你大概率会遇到一个尴尬的局面:你想把这个工具分享给不会编程的朋友或同事…

2026/7/31 6:02:25
openpyxl PatternFill参数详解:patternType对颜色填充的影响与最佳实践

openpyxl PatternFill参数详解:patternType对颜色填充的影响与最佳实践

1. 项目缘起:一个看似简单却暗藏玄机的颜色填充需求最近在做一个数据报表自动化的项目,用到了Python的openpyxl库来处理Excel文件。需求很简单:根据数据的不同状态,给对应的单元格填充不同的背景色,比如“通过”用绿色…

2026/7/31 6:02:25
07 FastAPI

07 FastAPI

FastAPI 入门 FastAPI 是什么? FastAPI 是 Python 里写 Web API 的框架,特点:特点说明快性能接近 Node.js、Go简单几行代码就能起一个 API自动文档启动后访问 /docs 有交互式文档类型注解和第 19 课的类型注解无缝配合它和 Flask、Django 的区…

2026/7/31 6:02:25
SonarQube Scanner报错 Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for

SonarQube Scanner报错 Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for

目录 核心报错拆解 字面含义 四大常见诱因(按概率排序) 1. SonarQube 服务端与本地 Scanner 版本严重不匹配(最高频) 2. SonarQube 服务端接口返回异常数据(返回空 / 残缺 JSON) 3. Jenkins 配置参数…

2026/7/31 6:02:25
嵌入式C++驱动开发:从硬件抽象到设计模式实践

嵌入式C++驱动开发:从硬件抽象到设计模式实践

1. 嵌入式C驱动开发概述在嵌入式系统开发领域,驱动开发一直是最具挑战性也最核心的技术环节。不同于应用层开发,驱动开发需要开发者同时具备硬件接口操作能力和系统级编程思维。而C作为面向对象的高级语言,在嵌入式驱动开发中的应用正变得越来…

2026/7/31 6:02:25
CAN矩阵深度解析:从DBC文件到代码生成的汽车通信实践

CAN矩阵深度解析:从DBC文件到代码生成的汽车通信实践

1. 项目概述:从“黑话”到工程语言的桥梁如果你刚接触汽车电子或者嵌入式网络开发,听到“CAN矩阵”这个词,大概率会一头雾水。它听起来像某种神秘的数学表格,或者是某个高端软件的专有名词。我第一次听到时也这么觉得,…

2026/7/31 5:57:25

月新闻