华为交换机配置导出备份python脚本
一、脚本编写思路
(一)针对设备型号
主要针对华为(Huawei)和华三(H3C)交换机设备的配置备份
(二)导出前预处理
1.在配置导出前,自动打开crt软件或者MobaXterm软件,并自动登录交换机,进行配置导出。
4.自动检测被导出交换机是否搭建ftp配置,如果没有配置ftp服务,自动完善ftp配置,并自动完善交换机设备和电脑ftp配置文件的传输设备。
2.需要密码登录的交换机,在桌面自动读取一个表格文档,名称为:【交换机设备信息表】的表格文件。
3.根据读取到的文档,新建ssh会话,输入文本的IP,管理员账号和密码,并自动登录设备。
(三)配置文件导出格式
1.将所有配置导出文件保存到桌面并新建一个文件夹名称为:时间戳+交换机,
2.每个导出交换机配置名称保存为:设备命名+设备型号+时间戳。
3.导出的同一设备配置文件格式必须同时包含TXT文本和cfg
二、函数依赖库
为了运行Python脚本,需要确保已经安装了几个特定的Python库。这些库包括用于处理网络连接、文件操作和数据处理的工具。以下是必须安装的库列表及其用途:
- paramiko: 用于处理SSH连接和会话,这对于与交换机进行通信非常重要。
- pandas: 用于读取和处理Excel文件中的数据,这是从桌面读取设备信息的关键部分。
- openpyxl: 这不是脚本中直接提到的,但它是
pandas
用于处理Excel文件的依赖库,特别是.xlsx
文件。 - socket: 这是标准库中的一部分,用于获取本机IP地址,通常不需要单独安装。
(一)安装步骤
你可以通过Python的包管理器pip来安装所需的库。在你的命令行工具中运行以下命令来安装这些库:
pip install paramiko pandas openpyxl
这条命令会安装paramiko
和pandas
,同时确保openpyxl
也被安装,使得pandas
可以处理Excel文件。
(二)确保环境配置正确
在运行脚本之前,还应确保你的Python环境配置正确,特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --version
或python3 --version
(取决于你的系统配置)来检查你的Python版本。
(三)安装示例
(四)确保环境配置正确
在运行脚本之前,还应确保你的Python环境配置正确,特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --version
或python3 --version
(取决于你的系统配置)来检查你的Python版本。
如果你是在一个新的环境或虚拟环境中工作,确保所有库都按需安装。这样可以避免影响系统中其他Python项目的依赖。
三、Python脚本
import paramiko # 导入paramiko库用于SSH连接
import pandas as pd # 导入pandas库处理Excel文件
import os # 导入os库进行文件系统操作
from datetime import datetime # 导入datetime库获取时间戳
import time # 导入time库用于暂停操作
import socket # 导入socket库用于获取本机IP地址# 读取设备信息表
def read_device_info():file_path = os.path.join(os.path.expanduser('~'), 'Desktop', '交换机设备信息表.xlsx') # 构造文件路径return pd.read_excel(file_path) # 使用pandas读取Excel文件并返回# 获取本机IP地址
def get_local_ip():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 创建UDP sockettry:s.connect(('10.255.255.255', 1)) # 尝试连接到一个不存在的地址以获取本机IPIP = s.getsockname()[0] # 获取成功后的本机IP地址except Exception:IP = '127.0.0.1' # 如果获取失败,使用本地回环地址finally:s.close() # 关闭socketreturn IP# 创建文件夹用于存放配置
def create_folder():timestamp = datetime.now().strftime("%Y%m%d%H%M%S") # 获取当前时间戳folder_name = f"{timestamp}_交换机" # 定义文件夹名folder_path = os.path.join(os.path.expanduser('~'), 'Desktop', folder_name) # 定义完整路径os.makedirs(folder_path, exist_ok=True) # 创建文件夹,如果存在则忽略return folder_path# 设置FTP服务
def setup_ftp(ssh, local_ip):commands = ['display ftp-server configuration\n', # 查看FTP服务器配置'ftp server enable\n', # 启用FTP服务的命令f'ftp server acl permit source ip {local_ip}\n' # 设置FTP服务的访问控制,允许本机IP访问]ssh.send(commands[0]) # 发送第一个命令time.sleep(2) # 等待命令执行output = ssh.recv(65535).decode('utf-8') # 读取输出if 'FTP server is not configured' in output: # 如果FTP服务未配置for command in commands[1:]: # 遍历并执行剩余命令ssh.send(command)time.sleep(1)# 导出配置文件
def export_config(ip, username, password, device_info, folder_path):client = paramiko.SSHClient() # 创建SSH客户端client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动接受新的SSH密钥client.connect(ip, username=username, password=password) # 连接到设备local_ip = get_local_ip() # 获取本机IP地址with client.invoke_shell() as ssh: # 开启一个新的SSH会话setup_ftp(ssh, local_ip) # 调用函数检查并配置FTPcommands = ['display current-configuration\n', 'save\n'] # 定义配置备份命令for command in commands: # 循环发送命令ssh.send(command)time.sleep(5) # 等待命令执行output = ssh.recv(65535).decode('utf-8') # 读取配置输出timestamp = datetime.now().strftime("%Y%m%d%H%M%S") # 重新获取时间戳filename_base = f"{device_info['设备命名']}_{device_info['设备型号']}_{timestamp}" # 构造文件名with open(os.path.join(folder_path, f"{filename_base}.txt"), 'w') as file_txt: # 保存为txt文件file_txt.write(output)with open(os.path.join(folder_path, f"{filename_base}.cfg"), 'w') as file_cfg: # 保存为cfg文件file_cfg.write(output)client.close() # 关闭SSH客户端# 主函数
def main():folder_path = create_folder() # 创建文件夹device_info = read_device_info() # 读取设备信息for index, row in device_info.iterrows(): # 遍历设备信息export_config(row['IP'], row['管理员账号'], row['密码'], row, folder_path) # 导出配置if __name__ == "__main__":main() # 运行主函数
相关文章:

华为交换机配置导出备份python脚本
一、脚本编写思路 (一)针对设备型号 主要针对华为(Huawei)和华三(H3C)交换机设备的配置备份 (二)导出前预处理 1.在配置导出前,自动打开crt软件或者MobaXterm软件&am…...

DS:时间复杂度和空间复杂度
欢迎各位来到 Harper.Lee 的学习世界! 博主主页传送门:Harper.Lee的博客主页 想要一起进步的uu欢迎来后台找我哦! 本片博客主要介绍的是数据结构中关于算法的时间复杂度和空间复杂度的概念。 一、算法 1.1 什么是算法? 算法(Alg…...

AI跟踪报道第41期-新加坡内哥谈技术-本周AI新闻:本周Al新闻: 准备好了吗?事情即将変得瘋狂
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Go 之 interface接口理解
go语言并没有面向对象的相关概念,go语言提到的接口和java、c等语言提到的接口不同,它不会显示的说明实现了接口,没有继承、子类、implements关键词。go语言通过隐性的方式实现了接口功能,相对比较灵活。 interface是go语言的一大…...

简约在线生成短网址系统源码 短链防红域名系统 带后台
简约在线生成短网址系统源码 短链防红域名系统 带后台 安装教程:访问 http://你的域名/install 进行安装 源码免费下载地址抄笔记 (chaobiji.cn)https://chaobiji.cn/...

设置默认表空间和重命名
目录 设置默认表空间 创建的临时表空间 tspace4 修改为默认临时表空间 创建的永久性表空间 tspace3 修改为默认永久表空间 重命名表空间 将表空间 tspace3 修改为 tspace3_1 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/13520…...
Hive大表join大表如何调优
目录 一、调优思路1、SQL优化1.1 大小表join1.2 大大表join 2、insert into替换union all3、排序order by换位sort by4、并行执行5、数据倾斜优化6、小文件优化 二、实战2.1 场景2.2 限制所需的字段,间接mapjoin2.2 解决异常值倾斜,如NULL加随机数打散2.…...
SAF文件选择、谷歌PhotoPicker图片视频选择与真实路径转换
一、构建选择文件与回调方法 //文件选择回调ActivityResultLauncher<String[]> pickFile registerForActivityResult(new ActivityResultContracts.OpenDocument(), uri->{if (uri ! null) {Log.e("cxy", "返回的uri:" uri);Log.e("cxy&q…...
java可变参数
前言 我们虽然能够用重载实现,但多个参数无法弹性匹配 代码 class mycalculator{//下面的四个calculate方法构成了重载//计算2个数的和,3个数的和,4,5,6个数的和// public void calculate(int n1){// System.out.…...
Flutter 中的 Expanded 小部件:全面指南
Flutter 中的 Expanded 小部件:全面指南 在 Flutter 中,Expanded 是一个用于控制子控件占据可用空间的布局小部件,通常与 Row、Column 或 Flex 等父级布局小部件一起使用。Expanded 允许你创建灵活的布局,其中子控件可以按照指定…...

[Kubernetes] KubeKey 部署 K8s v1.28.8
文章目录 1.K8s 部署方式2.操作系统基础配置3.安装部署 K8s4.验证 K8s 集群5.部署测试资源 1.K8s 部署方式 kubeadm: kubekey, sealos, kubespray二进制: kubeaszrancher 2.操作系统基础配置 主机名内网IP外网IPmaster192.168.66.2139.198.9.7node1192.168.66.3139.198.40.17…...
C# 与 Qt 的对比分析
C# 与 Qt 的对比分析 目录 C# 与 Qt 的对比分析 1. 语言特性 2. 开发环境 3. 框架和库 4. 用户界面设计 5. 企业级应用 6. 性能考量 在软件开发领域,C# 和 Qt 是两种常用的技术栈,它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深…...

MapReduce | 二次排序
1.需求 主播数据--按照观众人数降序排序,如果观众人数相同,按照直播时长降序 # 案例数据 用户id 观众人数 直播时长 团团 300 1000 小黑 200 2000 哦吼 400 7000 卢本伟 100 6000 八戒 250 5000 悟空 100 4000 唐僧 100 3000 # 期望结果 哦吼 4…...

Java后端初始化项目(项目模板)
介绍 emmmm,最近看了一些网络资料,也是心血来潮,想自己手工搭建一个java后端的初始化项目模板来简化一下开发,也就发一个模板的具体制作流程,(一步一步搭建,从易到难) okÿ…...
electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)
全局 stroe 添加 mutations 状态同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…...
自定义数据集图像分类实现
模型训练 要使用自己的图片分类数据集进行训练,这意味着数据集应该包含一个目录,其中每个子目录代表一个类别,子目录中包含该类别的所有图片。以下是一个使用Keras和TensorFlow加载自定义图片数据集进行分类训练的例子。 我们自己创建的数据集…...
【C++】手搓读写ini文件源码
【C】手搓读写ini文件源码 思路需求:ini.hini.cppconfig.confmian.cpp 思路 ini文件是一种系统配置文件,它有特定的格式组成。通常做法,我们读取ini文件并按照ini格式进行解析即可。在c语言中,提供了模板类的功能,所以…...

undolog
undolog回滚段 undolog执行的时间:在执行器操作bufferpool之前。 undolog页...
项目文档分享
Hello , 我是小恒。提前祝福妈妈母亲节快乐 。 本文写一篇初成的项目文档 (不是README.md哈),仅供参考 项目名称 脚本存储网页 项目简介 本项目旨在创建一个网页,用于存储和展示各种命令,用户可以通过粘贴复制命令到…...

【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)
写在前面 往期量子计算机博客: 【深耕 Python】Quantum Computing 量子计算机(1)图像绘制基础 【深耕 Python】Quantum Computing 量子计算机(2)绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...