公司动态

2分钟搞定全网巡检:一个脚本+五大必备 Python 库,让你一天干别人一周的活

📅 2026/7/31 5:07:05
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 和重试机制。现在打开你的终端装好库试试这个脚本吧如果你有任何问题或优化想法欢迎留言交流。下次见让我们都做个“懒”得聪明的运维人