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

利用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 +对应包名即可(例子如下)
利用python实现网络设备配置批量上传和批量下载功能_第1张图片

你可能感兴趣的:(python,网络工程,python,网络)