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

news2024/11/24 12:01:56

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

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

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

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

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

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

import time
import os
from datetime import datetime

ROOT_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 datetime

ROOT_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_name
    remote_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.coloradmin.cn/o/871184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间

正则表达式 目标:体验一下使用正则表达式来校验数据格式的合法性。需求:校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头 首先用自己编写的程序判断QQ号码是否正确 public static void main(String[] args) {Sy…

走近ChatGPT与类似产品:原理解析与比较

目录 1. 引言1.1 技术的进步与自然语言处理1.2 ChatGPT的崭新概念 2. ChatGPT: 一览众山小2.1 GPT-3.5架构简介2.2 ChatGPT的学习与训练2.3 文本生成的工作原理 3. 市场上类似产品调研3.1 对话式人工智能产品分类3.2 文心一言3.3 讯飞星火 4. 应用前景与局限性展望4.1 ChatGPT的…

STM32 F103C8T6学习笔记6:IIC通信__驱动MPU6050 6轴运动处理组件—一阶互补滤波

今日主要学习一款倾角传感器——MPU6050,往后对单片机原理基础讲的会比较少,更倾向于简单粗暴地贴代码,因为经过前些日子对MSP432的学习,对原理方面也有些熟络了,除了在新接触它时会对其引脚、时钟、总线等进行仔细一些的研究之外…

790. 多米诺和托米诺平铺

题目描述&#xff1a; 主要思路&#xff1a; class Solution { public:int numTilings(int n) {long long f[n][4],mod1e97;f[0][0]1;f[0][1]f[0][2]0;f[0][3]1;for(int i1;i<n;i){f[i][0]f[i-1][3];f[i][1] (f[i-1][0]f[i-1][2])%mod;f[i][2] (f[i-1][0]f[i-1][1])%mod;f…

嵌入式技术,就在你的手边!

嵌入式技术&#xff0c;听起来多么高大上的名词&#xff0c;同时它也确实是当今信息技术的前沿领域&#xff0c;但这并不意味着它就距离我们很遥远。 事实恰恰相反&#xff0c;在当今科技发展迅猛的时代&#xff0c;嵌入式技术成为了人们生活中不可或缺的一部分。它以其小巧、高…

手撕Java集合——链表

链表 一、链表概念特性二、不带头单向非循环链表实现&#x1f351;1、定义结点&#x1f351;2、打印链表&#x1f351;3、使用递归逆序打印链表&#x1f351;4、头插&#x1f351;5、尾插&#x1f351;6、指定位置插入&#x1f351;7、查找是否包含关键字key是否在单链表当中&a…

C#,数值计算——Dynpro的计算方法与源程序

给定向量nstate&#xff0c;其整数值是每个状态中的状态数阶段&#xff08;第一和最后阶段为1&#xff09;&#xff0c;并给定函数成本&#xff08;j&#xff0c;k&#xff0c;i&#xff09;返回在阶段i的状态j和的状态k之间移动的成本阶段i1&#xff0c;此例程返回与nstate长度…

(杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(8)

1005 0 vs 1 双端队列暴力模拟,时间复杂度为O(n*T) 首先预处理0的右边第一个0的下标,1的右边第一个1的下标,0的左边第一个0的下标,1的左边第一个1的下标 然后进行模拟 如果当前是zero的轮次,那么就看双端队列的两端 如果两头都是1,那么one赢,如果1头是0,1头是1,那么只能选择0 如…

概率图模型(Probabilistic Graphical Model,PGM)

概率图模型&#xff08;Probabilistic Graphical Model&#xff0c;PGM&#xff09;&#xff0c;是一种用图结构来描述多元随机变量之间条件独立性的概率模型。它可以用来表示复杂的概率分布&#xff0c;进行有效的推理和学习&#xff0c;以及解决各种实际问题&#xff0c;如图…

计算机基础概论

一、计算机的组成 1.计算机组成的五大部件 &#xff08;1&#xff09;运算器&#xff1a;也叫算术逻辑单元&#xff0c;完成对数据的各种常规运算&#xff0c;如加减乘除&#xff0c;也包括逻辑运算&#xff0c;位移&#xff0c;比较等。 &#xff08;2&#xff09;控制器&a…

掌握Python的X篇_34_Python朗读文字

各种广告中说python是人工智能的主宰&#xff0c;其实这更多是噱头的成分&#xff0c;但是python确实可以做很多的事情&#xff0c;本篇将会介绍利用pythonAI平台来合成声音。今天将会用到的是百度。 文章目录 1. baiToVoice2. 注册appid3. 合成代码 1. baiToVoice 使用百度A…

详解Mysql——第一篇/连接查询

mysql的连接查询&#xff0c;相必在网上都能找到很多的教程&#xff0c;博主今天不做老话常谈&#xff0c;不走重复路线 1.建表 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编…

ubuntu18.04下配置muduoC++11环境

1.安装muduo依赖的编译工具及库 Cmake sudo apt-get install cmakeBoost sudo apt-get install libboost-dev libboost-test-devcurl、c-ares DNS、google protobuf sudo apt-get install libcurl4-openssl-dev libc-ares-dev sudo apt-get install protobuf-compiler libp…

【单片机毕业设计2-基于stm32c8t6的智能台灯/书桌系统】

【单片机毕业设计2-基于stm32c8t6的智能台灯/书桌系统】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇2 基于stm32的智能台灯/智能书桌系统 &#x1f9ff;创作不易&#xff0c;拒绝白嫖&#xff08;有需可点击…

JavaWeb中Json传参的条件

JavaWeb中我们常用json进行参数传递 对应的注释为RequestBody 但是json传参是有条件的 最主要是你指定的实体类和对应的json参数能否匹配 1.属性和对应的json参数名称对应 2.对应实体类实现了Serializable接口&#xff0c;可以进行序列化和反序列化&#xff0c;这个才是实体类转…

【Minecraft】Fabric Mod开发完整流程4 - 自定义物品方块以及食物、燃料

目录 自定义物品与方块自动侦测矿藏工具工具功能实现执行结果 自定义音乐方块自定义食物自定义燃料 自定义物品与方块 自动侦测矿藏工具 探测器纹理下载地址&#xff1a; https://url.kaupenjoe.net/mbkj57/assets 众所周知&#xff0c;正经人永远不喜欢常规套路挖矿&#xff0…

一种改进的低导通电阻和开关损耗4H-SiC沟槽栅MOSFET

目录 标题&#xff1a;An Improved 4H-SiC Trench-Gate MOSFET With Low ON-Resistance and Switching Loss摘要信息解释ICP-RIELPCVDac电容的串并联 研究了什么文章的创新点文章的研究方法文章的结论 标题&#xff1a;An Improved 4H-SiC Trench-Gate MOSFET With Low ON-Resi…

阿里云账号注册入口_账户注册详细流程(图文)

阿里云账号怎么注册&#xff1f;阿里云账号支持手机号注册、阿里云APP注册、支付宝和钉钉多种注册方式&#xff0c;账号注册后需要通过实名认证才可以购买或使用云产品&#xff0c;阿里云百科来详细说下不同途径注册阿里云账号图文流程&#xff1a; 目录 阿里云账号注册流程 …

考虑分布式电源的配电网无功优化问题研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

ubuntu18.04安装NFS并启动NFS(mount挂载)

首先得把虚拟机网络更改成桥接模式&#xff0c;并把网段设置成与Windows同一网段&#xff0c;可以参考我的这篇博文http://t.csdn.cn/kRmNl ubuntu18.04安装NFS并启动NFS 终端输入指令&#xff1a;sudo apt install nfs-kernel-server 在ubuntu 18.04 下创建一个mount 共享的…