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

华为交换机配置导出备份python脚本

一、脚本编写思路

(一)针对设备型号

主要针对华为(Huawei)和华三(H3C)交换机设备的配置备份

(二)导出前预处理

1.在配置导出前,自动打开crt软件或者MobaXterm软件,并自动登录交换机,进行配置导出。
4.自动检测被导出交换机是否搭建ftp配置,如果没有配置ftp服务,自动完善ftp配置,并自动完善交换机设备和电脑ftp配置文件的传输设备。
2.需要密码登录的交换机,在桌面自动读取一个表格文档,名称为:【交换机设备信息表】的表格文件。
3.根据读取到的文档,新建ssh会话,输入文本的IP,管理员账号和密码,并自动登录设备。

(三)配置文件导出格式


1.将所有配置导出文件保存到桌面并新建一个文件夹名称为:时间戳+交换机,
2.每个导出交换机配置名称保存为:设备命名+设备型号+时间戳。    
3.导出的同一设备配置文件格式必须同时包含TXT文本和cfg

二、函数依赖库

为了运行Python脚本,需要确保已经安装了几个特定的Python库。这些库包括用于处理网络连接、文件操作和数据处理的工具。以下是必须安装的库列表及其用途:

  1. paramiko: 用于处理SSH连接和会话,这对于与交换机进行通信非常重要。
  2. pandas: 用于读取和处理Excel文件中的数据,这是从桌面读取设备信息的关键部分。
  3. openpyxl: 这不是脚本中直接提到的,但它是pandas用于处理Excel文件的依赖库,特别是.xlsx文件。
  4. socket: 这是标准库中的一部分,用于获取本机IP地址,通常不需要单独安装。
(一)安装步骤

你可以通过Python的包管理器pip来安装所需的库。在你的命令行工具中运行以下命令来安装这些库:

pip install paramiko pandas openpyxl 

这条命令会安装paramikopandas,同时确保openpyxl也被安装,使得pandas可以处理Excel文件。

(二)确保环境配置正确

在运行脚本之前,还应确保你的Python环境配置正确,特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --versionpython3 --version(取决于你的系统配置)来检查你的Python版本。

(三)安装示例

(四)确保环境配置正确

在运行脚本之前,还应确保你的Python环境配置正确,特别是Python版本。这个脚本应该在Python 3.x环境中运行无误。你可以通过运行python --versionpython3 --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可变参数

前言 我们虽然能够用重载实现&#xff0c;但多个参数无法弹性匹配 代码 class mycalculator{//下面的四个calculate方法构成了重载//计算2个数的和&#xff0c;3个数的和&#xff0c;4&#xff0c;5&#xff0c;6个数的和// public void calculate(int n1){// System.out.…...

Flutter 中的 Expanded 小部件:全面指南

Flutter 中的 Expanded 小部件&#xff1a;全面指南 在 Flutter 中&#xff0c;Expanded 是一个用于控制子控件占据可用空间的布局小部件&#xff0c;通常与 Row、Column 或 Flex 等父级布局小部件一起使用。Expanded 允许你创建灵活的布局&#xff0c;其中子控件可以按照指定…...

[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. 性能考量 在软件开发领域&#xff0c;C# 和 Qt 是两种常用的技术栈&#xff0c;它们分别在.NET平台和跨平台桌面应用开发中占据重要位置。本文将深…...

MapReduce | 二次排序

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

Java后端初始化项目(项目模板)

介绍 emmmm&#xff0c;最近看了一些网络资料&#xff0c;也是心血来潮&#xff0c;想自己手工搭建一个java后端的初始化项目模板来简化一下开发&#xff0c;也就发一个模板的具体制作流程&#xff0c;&#xff08;一步一步搭建&#xff0c;从易到难&#xff09; ok&#xff…...

electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)

全局 stroe 添加 mutations 状态同步方法 // 用于其他窗口同步 vuex 中的 DeviceTcpDataasyncDeviceTcpData(state: StateType, data: any) {state.deviceTcpData data},App.vue 里 onMounted(() > {console.log("App mounted");/*** vuex 多窗口 store 同步*//…...

自定义数据集图像分类实现

模型训练 要使用自己的图片分类数据集进行训练&#xff0c;这意味着数据集应该包含一个目录&#xff0c;其中每个子目录代表一个类别&#xff0c;子目录中包含该类别的所有图片。以下是一个使用Keras和TensorFlow加载自定义图片数据集进行分类训练的例子。 我们自己创建的数据集…...

【C++】手搓读写ini文件源码

【C】手搓读写ini文件源码 思路需求&#xff1a;ini.hini.cppconfig.confmian.cpp 思路 ini文件是一种系统配置文件&#xff0c;它有特定的格式组成。通常做法&#xff0c;我们读取ini文件并按照ini格式进行解析即可。在c语言中&#xff0c;提供了模板类的功能&#xff0c;所以…...

undolog

undolog回滚段 undolog执行的时间&#xff1a;在执行器操作bufferpool之前。 undolog页...

项目文档分享

Hello , 我是小恒。提前祝福妈妈母亲节快乐 。 本文写一篇初成的项目文档 &#xff08;不是README.md哈&#xff09;&#xff0c;仅供参考 项目名称 脚本存储网页 项目简介 本项目旨在创建一个网页&#xff0c;用于存储和展示各种命令&#xff0c;用户可以通过粘贴复制命令到…...

【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)

写在前面 往期量子计算机博客&#xff1a; 【深耕 Python】Quantum Computing 量子计算机&#xff08;1&#xff09;图像绘制基础 【深耕 Python】Quantum Computing 量子计算机&#xff08;2&#xff09;绘制电子运动平面波 【深耕 Python】Quantum Computing 量子计算机&…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

《Offer来了:Java面试核心知识点精讲》大纲

文章目录 一、《Offer来了:Java面试核心知识点精讲》的典型大纲框架Java基础并发编程JVM原理数据库与缓存分布式架构系统设计二、《Offer来了:Java面试核心知识点精讲(原理篇)》技术文章大纲核心主题:Java基础原理与面试高频考点Java虚拟机(JVM)原理Java并发编程原理Jav…...

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡

何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践&#xff0c;很多人以为AI已经强大到不需要程序员了&#xff0c;其实不是&#xff0c;AI更加需要程序员&#xff0c;普通人…...

负载均衡器》》LVS、Nginx、HAproxy 区别

虚拟主机 先4&#xff0c;后7...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...