利用python实现网络设备配置批量上传和批量下载功能

利用python实现网络设备配置批量上传和批量下载功能

  • 利用ensp实现网络设备和物理主机互通
  • 配置网络设备配置批量上传功能
  • 配置批量下载功能
  • 常见问题

提示本文章代码所使用目录均使用相对目录,只需将配置存放目录和文件下载目录(已用符号标出),更改为自己想存放和下载的目录即可*

利用ensp实现网络设备和物理主机互通

ensp配置
通过本文第一部分配置ensp,实现ensp网络设备和物理机互通,从而进行下一步实验

配置网络设备配置批量上传功能

import time
import os
from datetime import datetimeROOT_PATH = os.path.dirname(os.path.abspath(__file__))  #当前目录的上一级目录
DB_PATH = os.path.join(ROOT_PATH,"*")                  #拼接路径,*更改为自己存放配置文件的路径,最好和项目在同一个文件中
def ssh_connect(ip):ssh = paramiko.SSHClient()                  #创建SSH登录实例,相当于定义了一个客户端ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())       #自动保存公钥ssh.connect(hostname=ip,port=22,username="admin",password="admin123")	#网络设备账号密码,需要更改cli = ssh.invoke_shell()              #将结果回显time.sleep(0.5)file_path = os.path.join(DB_PATH,"*.txt")	#所需上传的配置文件名称f = open(f"{file_path}", mode="r", encoding="utf-8")          #打开与本程序在同一个文件夹下的文件并放入内存中for i in f.readlines():cli.send(i)time.sleep(0.5)f.close()res = cli.recv(9999).decode('utf-8')        #字符转换为utf-8格式print(res)ssh.close()
data_list = [{"ip": f"192.168.56.{i}","sysname":f"SW{i}"} for i in range(2,3)]
for i in data_list:ssh_connect(i["ip"])

配置批量下载功能

可以用于定期下载配置文件,减少手动下载的麻烦

import  paramiko
import time
import os
from datetime import datetimeROOT_PATH = os.path.dirname(os.path.abspath(__file__))
def down(ip,sysname):tran = paramiko.Transport((ip,22))tran.connect(username="admin",password="admin123")sftp = paramiko.SFTPClient.from_transport(tran)path = os.path.join(ROOT_PATH,"*")      #定义一个本地目录,*更改为想创建的文件目录if not os.path.exists(path):                #如果不存在path定义的目录则创建os.makedirs(path)time_now = datetime.now().strftime("%Y-%m-%d-%H-%M-%S") #用strftime转为为字符串,之间只能用-,否则报错file_name = os.path.join(path, fr"{sysname}-{time_now}.zip")print(file_name)local_path = file_nameremote_path = "/vrpcfg.zip"sftp.get(remote_path,local_path)
data_list = [{"ip": f"192.168.56.{i}","sysname":f"SW{i}"} for i in range(2,4)]
for i in data_list:down(i["ip"],i["sysname"])

常见问题

如果出错请查看是否语法格式错误,目录是否存在空格
如果无对应包文件,会导致功能无法使用,请提前下载,在python软件终端界面,输入pip3 install +对应包名即可(例子如下)
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/88434.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.利用matlab完成 符号微积分和极限 (matlab程序)

1.简述 一、符号微积分 微积分的数值计算方法只能求出以数值表示的近似解,而无法得到以函数形式表示的解析解。在 MATLAB 中,可以通过符号运算获得微积分的解析解。 1. 符号极限 MATLAB 中求函数极限的函数是 limit,可用来求函数在指定点的…

Node.js新手在哪儿找小项目练手?

前言 可以参考一下下面的nodejs相关的项目,希望对你的学习有所帮助,废话少说,让我们直接进入正题>> 1、 NodeBB Star: 13.3k 一个基于Node.js的现代化社区论坛软件,具有快速、可扩展、易于使用和灵活的特点。它支持多种数…

数据结构-队列(C语言的简单实现)

简介 队列也是一种数据结构,队列也可以用来存放数字每次只能向队列里将入一个数字,每次只能从队列里获得一个数字在队列中,允许插入的一段称为入队口,允许删除的一段称为出队口它的原则是先进先出(FIFO: first in first out)&…

Titanic--细节记录二

目录 merge、join以及concat的方法的不同以及相同 merge join concat stack函数 agg函数 countplot--计算条形统计图 FacetGrid kdeplot--核密度估计图 facet.set facet.add_legend() 折线图表示年龄分布情况 为什么所有的曲线都被添加到同一个图上: 填充…

标记垃圾,有三种色彩:四千长文带你深入了解三色标记算法

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

MFC计算分贝

分贝的一种定义是,表示功率量之比的一种单位,等于功率强度之比的常用对数的10倍; 主要用于度量声音强度,常用dB表示; 其计算,摘录网上一段资料; 声音的分贝值可以通过以下公式计算&#xff1…

【数据结构】‘双向链表’冲冲冲

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

Mybatis-Plus

1. Mybatis-Plus概念 1.1 Mybatis-Plus介绍 官⽹: https://mybatis.plus/ 或 https://mp.baomidou.com/ Mybatis-Plus 介绍 MyBatis-Plus (简称 MP )是⼀个 MyBatis 的增强⼯具,在 MyBatis 的基础上只做增强不做改变,…

“可一学院”区块链学习平台正式启动,助力BSV技术普及与传播

2023年8月8日,上海可一澈科技有限公司(以下简称“可一科技”) 正式发布区块链学习平台“可一学院”。“可一学院” 立足于BSV区块链技术本源,汇集了多层次的专业课程和学习资源,致力于打造一个适合各类人群使用的一站式…

SpringMVC关于SSM的整合配置步骤

🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaweb 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 SSM整合 一、创建工程1.1创建Maven工程1.2工程命名1.3检查…

Spring Boot 项目实现 Spring AOP

【注】实现在SpringBoot项目中,同时给两个类的方法添加AOP前置通知 1、创建一个SpringBoot项目 2、创建两个目标类和方法 package com.tqazy.learn_spring_project.spring_aop;import org.springframework.stereotype.Service;/*** ClassName SpringAopUserServi…

JZ40最小的K个数

题目地址:最小的K个数_牛客题霸_牛客网 题目回顾: 解题思路: 注意本题不需要去重。 最简单的方法:排序后数组顺序是由小到大的,也就是说此时数组前k个数就是我们要求的结果。 整体代码: public ArrayLi…

【Linux从入门到精通】文件I/O操作(C语言vs系统调用)

文章目录 一、C语言的文件IO相关函数操作 1、1 fopen与fclose 1、2 fwrite 1、3 fprintf与fscanf 1、4 fgets与fputs 二、系统调用相关接口 2、1 open与close 2、2 write和read 三、简易模拟实现cat指令 四、总结 🙋‍♂️ 作者:Ggggggtm 🙋‍…

MySQL多表查询

1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…

图·c++

数据结构: 邻接矩阵,邻接表 1.图的存储方式:邻接矩阵,邻接表 1.稀疏图和稠密图 2.无向图: n n n 个点,最多 n ( n − 1 ) / 2 n(n-1)/2 n(n−1)/2 条边, 当 m m m 接近 n ( n − 1 ) / 2 …

【JVM】CPU飙高排查方案与思路

文章目录 CPU飙高排查方案与思路 CPU飙高排查方案与思路 1.使用top命令查看占用cpu的情况 2.通过top命令查看后,可以查看是哪一个进程占用cpu较高,上图所示的进程为:40940 3.查看进程中的线程信息 4.可以根据进程 id 找到有问题的线程&a…

积木报表集成前端加载js文件404

项目场景: 在集成积木报表和shiro时候: 集成积木报表,shrio,shrio是定义在另一个模块下的,供另一个启动类使用,积木报表集成shrio的时候,需要依赖存放shrio的核心包,该核心包除了存…

React构建的JS优化思路

背景 之前个人博客搭建时,发现页面加载要5s才能完成并显示 问题 React生成的JS有1.4M,对于个人博客服务器的带宽来说,压力较大,因此耗费了5S的时间 优化思路 解决React生成的JS大小,因为我用的是react-router-dom…

到 2030 年API 攻击预计将激增近 1000%

导读云原生应用程序编程接口管理公司 Kong 联合外部经济学家的最新研究预计,截至 2030 年 API 攻击将激增 996%,意味着与 API 相关的网络威胁的频率和强度都显着升级。 这项研究由 Kong 分析师和布朗大学副教授 Christopher Whaley 博士合作进行&#x…

webpack 热更新的实现原理

webpack 的热更新⼜称热替换(Hot Module Replacement),缩写为HMR。这个机制可以做到不⽤刷新浏览器⽽将新变更的模块替换掉旧的模块。 原理: ⾸先要知道 server 端和 client 端都做了处理⼯作: 在 webpack 的 watch…