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

Python自动化:华为交换机配置批量备份与智能预处理

1. 华为交换机配置备份的痛点与Python自动化方案每次月底备份几十台华为交换机的配置时我都得挨个登录设备、输入命令、保存文件。最崩溃的是有次误操作覆盖了关键配置花了整整两天才恢复。这种重复劳动不仅效率低下还容易出错。后来我发现用Python脚本可以完美解决这些问题今天就分享这套经过实战检验的自动化方案。传统手动备份的三大致命伤首先登录每台设备平均要3分钟100台设备就是5小时纯机械操作其次密码输入错误、命令敲错都是家常便饭最重要的是备份文件命名混乱紧急恢复时根本找不到对应版本。而我们的Python脚本能做到自动从Excel表格读取设备信息IP/账号/密码智能检测并配置FTP传输服务按设备名型号时间戳规范保存文件同时生成txt和cfg双格式备份实测下来原来需要5小时的工作现在10分钟就能完成而且备份文件整整齐齐。这个方案特别适合管理10台以上华为交换机的运维团队不需要额外购买软件用PythonExcel就能搭建自动化流水线。2. 环境准备与依赖库安装2.1 Python环境配置建议我强烈建议使用Python 3.8版本这个版本对第三方库的兼容性最稳定。遇到过有同事用Python 3.6跑脚本时报paramiko的加密算法错误升级后问题立即解决。如果你同时管理多套Python环境用conda创建独立环境是个好主意conda create -n network_backup python3.8 conda activate network_backup2.2 必须安装的四大金刚库这几个库是我们脚本的核心依赖建议用pip安装时指定版本号避免兼容问题pip install paramiko2.11.0 pandas1.5.3 openpyxl3.0.10paramiko处理SSH连接的神器支持密码和密钥认证。我在华为S5700系列交换机上测试时发现需要开启stelnet server enable服务才能正常连接pandas读取Excel设备信息表的关键注意表格需要包含IP、管理员账号、密码三列openpyxl处理xlsx格式的Excel文件比xlrd库更稳定socketPython内置库用来获取本机IP地址配置FTP白名单遇到过最坑的问题是公司电脑有多网卡时socket获取的IP可能不对。这时候可以手动指定IP# 替代get_local_ip()函数 local_ip 192.168.1.100 # 填写实际用于FTP传输的IP3. 设备信息表的设计规范3.1 Excel表格的标准格式我们的脚本依赖一个结构化的设备信息表建议保存在桌面并命名为交换机设备信息表.xlsx。表格需要包含以下字段IP地址管理员账号密码设备命名设备型号192.168.1.1adminAbc123核心交换S5700192.168.1.2admin123Abc接入交换S3700重要提示第一行必须是标题行名称需完全匹配脚本中的字段名密码字段建议使用统一加密方式存储脚本中可以添加解密逻辑设备型号需要与华为实际型号一致会用于备份文件命名3.2 多厂商设备兼容方案虽然主要针对华为交换机但实际项目中常遇到多品牌设备共存的情况。通过简单修改就能支持H3C等设备# 在export_config函数中添加设备类型判断 if H3C in device_info[设备型号]: commands [display current-configuration\n] # H3C保存命令不同 else: commands [display current-configuration\n, save\n]4. 核心代码实现详解4.1 FTP服务自动配置的玄机华为交换机默认可能关闭FTP服务我们的脚本会自动检测并开启。这里有个坑要注意不同系统版本命令可能有差异def setup_ftp(ssh, local_ip): # VRP5.x版本命令 commands_v5 [ ftp server enable\n, facl number 2000\n, frule permit source {local_ip} 0\n ] # VRP8.x版本命令 commands_v8 [ ftp server enable\n, fftp server acl permit source ip {local_ip}\n ] # 先发送查询命令判断版本 ssh.send(display version\n) time.sleep(2) output ssh.recv(65535).decode(utf-8) if VRP5 in output: [ssh.send(cmd) for cmd in commands_v5] else: [ssh.send(cmd) for cmd in commands_v8]4.2 配置备份的异常处理机制网络设备运维最怕的就是脚本执行到一半报错退出。我们给关键操作都加了异常捕获try: client.connect(ip, usernameusername, passwordpassword, timeout10) except paramiko.ssh_exception.NoValidConnectionsError: print(f{ip} 连接失败检查网络连通性) with open(error_log.txt, a) as f: f.write(f{datetime.now()} {ip} 连接失败\n) return except paramiko.ssh_exception.AuthenticationException: print(f{ip} 认证失败检查账号密码) return5. 备份文件智能管理方案5.1 多维度归档策略原始脚本只是简单按时间戳归档实际使用中我优化为三级目录结构20230815_备份/ ├── 核心区域/ │ ├── S5700_核心交换_202308151030.txt │ └── S5700_核心交换_202308151030.cfg ├── 接入区域/ │ ├── S3700_接入交换1_202308151031.txt │ └── S3700_接入交换2_202308151032.cfg └── backup_log.csv # 记录备份状态和时间实现这个结构只需要修改create_folder函数def create_folder(area): base_path os.path.join(os.path.expanduser(~), Desktop) date_folder datetime.now().strftime(%Y%m%d) _备份 area_path os.path.join(base_path, date_folder, area) os.makedirs(area_path, exist_okTrue) return area_path5.2 配置差异对比技巧单纯的备份还不够我通常会用difflib实现自动比对import difflib def compare_config(new_file, old_file): with open(new_file) as f1, open(old_file) as f2: diff difflib.unified_diff( f2.readlines(), f1.readlines(), fromfileold_file, tofilenew_file ) return .join(diff) # 使用示例 changes compare_config(today.cfg, yesterday.cfg) if changes: with open(changes.log, w) as f: f.write(changes)6. 实战中的避坑指南6.1 华为设备特殊设置有些华为交换机需要额外配置才能支持我们的脚本确保stelnet服务已开启stelnet server enable修改用户权限local-user admin service-type ssh设置用户级别local-user admin privilege level 156.2 大规模执行的优化技巧当设备数量超过50台时建议添加多线程处理但要注意华为设备SSH连接数限制设置合理的超时时间client.connect(timeout15)在Excel中添加优先级字段先备份核心设备from concurrent.futures import ThreadPoolExecutor def batch_export(max_workers5): devices read_device_info() with ThreadPoolExecutor(max_workers) as executor: for _, row in devices.iterrows(): executor.submit(export_config, row[IP], ...)7. 扩展应用场景这套脚本框架经过简单改造还能实现定期自动巡检CPU/内存/端口状态采集配置批量修改如同时更新所有设备的SNMP社区字符串固件版本检查与升级比如要实现端口状态监控只需修改export_config函数中的命令commands [display interface brief\n] output ssh.recv(65535).decode(utf-8) # 解析输出获取异常端口最后提醒大家任何自动化操作前一定要先做好备份。我在脚本中内置了预检查模式添加--dry-run参数时只会测试连接不执行实际备份建议首次运行时使用这个模式验证。

相关文章:

Python自动化:华为交换机配置批量备份与智能预处理

1. 华为交换机配置备份的痛点与Python自动化方案 每次月底备份几十台华为交换机的配置时,我都得挨个登录设备、输入命令、保存文件。最崩溃的是有次误操作覆盖了关键配置,花了整整两天才恢复。这种重复劳动不仅效率低下,还容易出错。后来我发…...

你还在为MCP网关扩容付费?C++专家团闭门复盘:如何用1套代码、0新增机器支撑3倍流量增长(含CMake跨平台成本建模模板)

更多请点击: https://intelliparadigm.com 第一章:C编写高吞吐量MCP网关成本控制策略的底层逻辑 MCP(Message Control Protocol)网关作为微服务间异步通信的核心枢纽,其吞吐量与资源开销直接决定云基础设施的TCO&…...

机载视频 SEI 解析与抽帧

机载视频 SEI 解析与抽帧 一、模块要解决什么问题 机载吊舱录制的视频中,常通过码流侧的补充增强信息附带 POS、姿态、时间、焦距 等。测绘内业需要两类产物: 仅解析 SEI:得到与解码帧对齐的记录列表,供质检、对时、与定拍数据融合…...

VSCode低代码插件踩坑实录:17个致命兼容性问题+官方未公开的API调用黑盒(内部泄露版)

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026低代码拖拽插件的演进脉络与定位重构 VSCode 2026 版本正式将低代码拖拽能力从实验性扩展(Preview Extension)升格为核心编辑器原生能力层,其插件架构由传…...

农业IoT固件调试总卡壳?VSCode远程开发配置全拆解,12类国产传感器兼容方案首次公开

更多请点击: https://intelliparadigm.com 第一章:农业IoT固件调试的典型困局与VSCode破局价值 在田间部署的土壤温湿度传感器、智能灌溉控制器等农业IoT设备,常运行基于ESP32或nRF52的裸机固件或Zephyr RTOS应用。开发者普遍面临三大困局&a…...

最小生成树的 Kruskal 与 Prim 算法:从连通到最优,一篇文章彻底掌握

如何用最少的成本,把 n 个城市连接起来?如何铺设光纤、设计电路,既保证连通又成本最低?答案就在 最小生成树 中。最小生成树(Minimum Spanning Tree, MST)是图论中至关重要的概念,广泛应用在网络…...

长链思维推理:大模型深度思考的核心能力与工程实践指南

1. 项目概述:长链思维推理的演进与核心价值如果你最近关注大语言模型(LLM)的发展,尤其是像 OpenAI o1、DeepSeek-R1 这类“推理模型”的崛起,那么“长链思维推理”这个概念一定不会陌生。它不再是早期 GPT-3.5 那种简单…...

Whiz:基于AI的终端命令生成工具,提升开发效率

1. 项目概述:为你的终端装上“副驾驶”如果你和我一样,每天有超过一半的工作时间是在终端(Terminal)里度过的,那你一定也经历过这样的时刻:面对一个复杂的命令,需要反复查阅man手册;…...

如何快速部署开源实验室管理系统:面向中小型实验室的完整指南

如何快速部署开源实验室管理系统:面向中小型实验室的完整指南 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims 在当今数字化时代,实验室管理面临着前所未有的挑战:如何…...

Loopi:本地优先的AI智能体自动化平台,打通大模型与真实世界操作

1. 项目概述:当AI拥有“双手”与“眼睛”如果你曾尝试将AI的能力与真实世界的操作结合起来,比如让AI自动帮你整理邮件、抓取网页数据并生成报告,或者搭建一个能自主处理客服工单的智能助手,你可能会发现一个巨大的鸿沟。一边是强大…...

Mesa 3.0:Python多智能体建模的架构革命与工程实践

Mesa 3.0:Python多智能体建模的架构革命与工程实践 【免费下载链接】mesa Mesa is an open-source Python library for agent-based modeling, ideal for simulating complex systems and exploring emergent behaviors. 项目地址: https://gitcode.com/gh_mirror…...

csp信奥赛C++高频考点专项训练之贪心算法 --【删数问题】:删数问题

csp信奥赛C高频考点专项训练之贪心算法 --【删数问题】:删数问题 题目描述 键盘输入一个高精度的正整数 nnn(不超过 250250250 位),去掉其中任意 kkk 个数字后剩下的数字按原左右次序将组成一个新的非负整数。编程对给定的 nnn 和…...

神经网络联合建模:分类与回归任务的高效解决方案

1. 神经网络在分类与回归联合任务中的应用价值在真实业务场景中,我们常常遇到需要同时预测离散类别和连续数值的问题。比如电商平台既要判断用户是否会点击商品(分类),又要预估点击后的停留时长(回归)&…...

深度解析:wxauto微信自动化框架的架构设计与实现原理

深度解析:wxauto微信自动化框架的架构设计与实现原理 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/w…...

DXVK 2.7.1:如何实现Linux游戏性能的终极突破与Vulkan图形转换技术

DXVK 2.7.1:如何实现Linux游戏性能的终极突破与Vulkan图形转换技术 【免费下载链接】dxvk Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine 项目地址: https://gitcode.com/gh_mirrors/dx/dxvk 在Linux平台上运行Windows游戏一直面临着…...

游戏服务器分布式架构实战:cellmesh框架核心原理与应用

1. 项目概述:一个为游戏而生的分布式服务框架如果你在游戏服务器开发领域摸爬滚打过几年,大概率会对“服务拆分”和“通信治理”这两个词又爱又恨。爱的是,当你的在线玩家从几百人增长到几十万、上百万时,单体服务器架构必然崩溃&…...

SDF 文件深度解析

从格式解读到反标注实战,一文搞懂时序仿真的灵魂文件| 数字后端工程师必读 | STA & GLS 实战 | 避坑指南 |01 你的门级仿真,有没有踩过这些坑?做了几年芯片,最怕的不是综合报warning,也不是PR跑不完——而是门级仿…...

VSCode 2026远程文件同步提速412%:实测SSHFS+Rsync+DeltaFS三引擎协同优化方案

更多请点击: https://intelliparadigm.com 第一章:VSCode 2026远程文件同步提速412%:核心突破与技术背景 VSCode 2026 引入全新自适应增量同步引擎(AISE),彻底重构 Remote-SSH 和 Dev Containers 的文件同…...

nodejs 下国内最流行的框架

在国内企业、互联网公司、中小项目中,Node.js 最主流、使用最广泛的框架是:Express 和 NestJS,二者分属不同场景,占据绝对主导地位。一、按场景划分的主流排名1. 老牌通用王者:Express地位:国内最普及、生态…...

VCAM虚拟摄像头:安卓Xposed框架下的终极摄像头替换解决方案

VCAM虚拟摄像头:安卓Xposed框架下的终极摄像头替换解决方案 【免费下载链接】com.example.vcam 虚拟摄像头 virtual camera 项目地址: https://gitcode.com/gh_mirrors/co/com.example.vcam 在移动应用开发和内容创作领域,摄像头功能的重要性不言…...

缠论量化分析终极秘籍:从理论到实战的完整智能化解决方案

缠论量化分析终极秘籍:从理论到实战的完整智能化解决方案 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 在金融市场的波动中,技术分析工具的质量直接影响着交易决策的精准度。今…...

字节开源trae-agent:Rust构建的高性能服务网格数据平面解析

1. 项目概述:一个现代服务网格数据平面的诞生最近在梳理服务网格生态时,我注意到了字节跳动开源的trae-agent。这个名字乍一看有点陌生,不像Envoy、Linkerd-proxy那样如雷贯耳,但深入了解后,我发现它代表了一种非常务实…...

AI老照片修复:Stable Diffusion技术实践与伦理考量

1. 老照片修复的艺术与技术挑战老照片承载着历史的记忆,但时间的流逝往往让这些珍贵的影像变得模糊、褪色甚至破损。作为一名长期从事数字影像修复的从业者,我深知传统修复方法需要耗费大量时间精力——在Photoshop中手动修复一张严重破损的照片可能需要…...

[嵌入式系统-267]:同一个型号的舵机如何支持Teacher模式和Student模式?如何设置?

在机械臂的“主从控制”(Teacher-Student)系统中,同一个型号的舵机完全可以同时支持两种模式。核心原理在于:模式不是由舵机硬件决定的,而是由控制器(主控板)赋予它的“角色”决定的。这就好比同…...

[嵌入式系统-266]:嵌入式系统软件常见十大难题与排查方法

在嵌入式开发中,我们常说“硬件是躯体,软件是灵魂”,但当灵魂出窍(程序跑飞)或者躯体僵硬(死机)时,排查工作往往令人头秃。结合最新的行业实战经验和经典理论,为你梳理了…...

[嵌入式系统-265]:什么是函数的可重入、什么是线程安全函数、什么是中断安全,举例说明

这三个概念是嵌入式和多线程编程中的基石,它们之间存在着严格的包含和递进关系。简单来说,它们的核心区别在于“在什么环境下被意外打断”以及“如何保护共享资源”。我们可以用一个形象的比喻来开场:可重入函数:像一个独行侠。他…...

从零实现C/C++内存管理库:轻量级内存泄漏检测与调试实践

1. 项目概述:一个极简内存管理库的诞生最近在整理一些C/C的老项目,发现很多代码里都散落着各种malloc和free,偶尔夹杂着new和delete。调试内存泄漏、野指针问题简直是一场噩梦,尤其是当项目规模稍大,或者多人协作时&am…...

深入解析Nuxt 3中的图标使用

在使用Nuxt 3开发应用时,图标的管理和使用是一个常见且关键的问题。本文将通过一个实际的例子,深入探讨如何在Nuxt 3应用中有效地管理和使用图标。 背景介绍 我们假设有一个Nuxt 3应用,采用了NuxtUI作为UI框架。为了避免图标名称的拼写错误和重复引用,我们创建了一个工具…...

基于PPO与CNN的DoomNet:从像素输入到游戏AI的深度强化学习实战

1. 项目概述:DoomNet,一个基于像素的强化学习智能体如果你对游戏AI或者深度强化学习感兴趣,那你大概率听说过DeepMind的Atari游戏AI,或者OpenAI的Dota 2智能体。这些项目通常需要庞大的计算资源和复杂的工程架构。今天我想分享一个…...

量子开发者的VSCode生死线,2026语法高亮失效?立即检测这4个隐藏配置项,错过将影响QPU编译精度!

更多请点击: https://intelliparadigm.com 第一章:量子开发者的VSCode生死线,2026语法高亮失效?立即检测这4个隐藏配置项,错过将影响QPU编译精度! 量子编程环境正经历一场静默崩溃:自2026年QDK…...