Python通过SFTP实现网络设备配置备份

news2024/11/17 12:43:25

一、背景

为了防止网络设备意外损坏,导致配置文件无法恢复,可以通过将网络设备的配置文件备份到本地电脑上。

一般情况下,设备支持通过FTP、TFTP、FTPS、SFTP和SCP备份配置文件。其中使用FTP和TFTP备份配置文件比较简单,但是存在安全风险。在安全要求比较高的场景中,建议使用FTPS、SFTP和SCP备份配置文件。以下仅以SFTP作为示例介绍备份配置文件。

二、 实验信息

1、实验环境

本文采用python主机与网络设备通过网线直连的方式进行实验,实操当中,我们可以通过已配置完成网络通信并已开通ssh及sftp的网络设备进行配置备份,所以说此实验与实操基本一样,可以使用本文代码,只需修改网络设备信息即可。

2、设备信息

①网络设备

IP:192.168.200.1

username=python

password=python@network

ssh端口:22

目标备份文件:/config.cfg

<xxx>dir
Directory of flash:/

  Idx  Attr     Size(Byte)  Date        Time       FileName 
    0  drw-              -  Oct 26 2018 05:33:48   dhcp
    1  drw-              -  Oct 26 2018 05:33:13   user
    2  -rw-         13,432  Oct 26 2018 05:33:54   default_ca.cer
    3  -rw-             36  Jul 12 2017 04:06:24   $_patchstate_reboot
    4  -rw-     68,955,900  Mar 27 2018 14:25:44   s5720s-li-v200r011c10spc600.cc
    5  -rw-              0  Mar 06 2024 10:04:48   1.txt
    6  -rw-          1,407  Oct 26 2018 05:33:57   default_local.cer
    7  drw-              -  Oct 07 2023 00:52:56   logfile
    8  -rw-            120  Oct 07 2023 00:08:35   vrpcfg.zip
    9  drw-              -  Oct 26 2018 05:33:13   pmdata
   10  drw-              -  Jul 12 2017 04:06:24   $_install_mod
   11  -rw-            836  Mar 05 2024 14:58:24   rr.bak
   12  -rw-            836  Mar 05 2024 14:58:24   rr.dat
   13  -rw-          3,523  Mar 05 2024 15:44:45   config.cfg
   14  -rw-          2,129  Mar 05 2024 15:44:46   private-data.txt
   15  drw-              -  Mar 05 2024 15:44:42   localuser
   16  -rw-         56,565  Mar 27 2018 14:25:45   s5720s-li-v200r011sph005.pat
   17  drw-              -  Oct 26 2018 07:38:19   $_backup
   18  -rw-              4  Oct 29 2018 00:53:20   snmpnotilog.txt
   19  -rw-            200  Oct 26 2018 05:33:58   ca_config.ini
   20  -rw-      1,158,453  Jun 18 2022 20:13:47   help.web
   21  -rw-          3,004  Jun 23 2022 03:14:35   backup20220626.zip

244,164 KB total (57,868 KB free)

②python主机信息

ip:192.168.200.2/24

目标备份存放位置:

3、实验目的

通过python脚本将目标备份文件:/config.cfg成功备份到python主机的D:\Network_backup目录下

三、Python中paramiko模块简介

1、paramiko模块

Paramiko是python实现SSHv2协议的模块之一,它可以实现安全的远程命令执行,文件传输等功能。

Paramiko常用的两个类SSHClient和SFTPClient,分别提供SSH和SFTP功能。

2、使用流程

3、常用类

  • Channel:该类用于创建SSH Transport上的通道
  • Transport:该类用于对象上创建一个会话对象
  • SFTPClient:该类通过一个打开的SSH会话创建SFTP会话通道并执行命令
  • SSHClient:该类是与SSH服务器会话的高级表示,集成了Transport,Channle和SFTPClient
  • Host keys:该类用于创建一个密钥或密码对象

4、对象/类示例

①transport(socket)

# 引入paramiko模块
import paramiko
# 建立Transport对象,实例化SSH会话通道
tran = paramiko.Transport(('192.168.200.1',22))
# 建立SSH会话连接,并使用密码进行身份验证
tran.connect(username='python',password='admin@123')

②from_transport()

# 引入paramiko模块
import paramiko
# 建立Transport对象,实例化SSH会话通道
tran = paramiko.Transport(('192.168.200.1',22))
# 建立SSH会话连接,并使用密码进行身份验证
tran.connect(username='python',password='admin@123')
#定义变量sftp,并从打开的Transport创建一个SFTP会话连接
sftp = paramiko.SFTPClient.from_transport(tran)

③get()

# 引入paramiko模块
import paramiko
# 建立Transport对象,实例化SSH会话通道
tran = paramiko.Transport(('192.168.200.1',22))
# 建立SSH会话连接,并使用密码进行身份验证
tran.connect(username='python',password='admin@123')
# 定义变量sftp,并从打开的Transport创建一个SFTP会话连接
sftp = paramiko.SFTPClient.from_transport(tran)
# 定义变量local_path
local_path = r'D:\Network_backup'
# 定义变量remote_path
remote_path = '/config.cfg'
# 从远程地址下载指定文件到本地路径
sftp.get(remote_path,local_path)
#关闭会话
tran.close()

④put()

# 引入paramiko模块
import paramiko
# 建立Transport对象,实例化SSH会话通道
tran = paramiko.Transport(('192.168.200.1',22))
# 建立SSH会话连接,并使用密码进行身份验证
tran.connect(username='python',password='admin@123')
# 定义变量sftp,并从打开的Transport创建一个SFTP会话连接
sftp = paramiko.SFTPClient.from_transport(tran)
# 定义变量local_path
local_path = r'D:\local_path\test.cfg'
# 定义变量remote_path,由于网络设备配置文件在根目录/
remote_path = '/'
# 从本地路径文件上传到远程路径
sftp.get(local_path,remote_path)
# 关闭会话
tran.close()

⑤其他常用对象/类功能

常用方法功能/作用
connect()实现远程服务器连接与认证
set_missing_host_key_policy()设置连接到没有已知主机密钥的服务器时使用策略
load_system_host_keys()从系统文件加载主机密钥
exec_command()在远程服务器执行命令
invoke_shell()在远程服务器启动交互shell会话
open_sftp()在一个会话连接中创建sftp通道
close()关闭连接

 四、实验配置备份

1、PermissionError: [Errno 13] Permission denied:排错

通过上面2张照片可以看出PermissionError: [Errno 13] Permission denied错误是由于打开目标不是文件而是目录造成,所以可以修改代码如下:

2、local_path = r'D:/文件夹\文件名

导出配置如下:


!Software Version V200R011C10SPC600
#
sysname xxx
#
undo info-center enable
#
vlan batch 99
#
authentication-profile name default_authen_profile
authentication-profile name dot1x_authen_profile
authentication-profile name mac_authen_profile
authentication-profile name portal_authen_profile
authentication-profile name dot1xmac_authen_profile
authentication-profile name multi_authen_profile
#
clock timezone Beijing add 08:00:00
#
radius-server template default
#
pki realm default
 certificate-check none
#
free-rule-template name default_free_rule
#
portal-access-profile name portal_access_profile
#
aaa
 authentication-scheme default
 authentication-scheme radius
  authentication-mode radius
 authorization-scheme default
 accounting-scheme default
 local-aaa-user password policy administrator 
  password history record number 0
  password expire 0
 domain default
  authentication-scheme radius
  radius-server default
 domain default_admin
  authentication-scheme default
 local-user admin password irreversible-cipher $1a$I2R%>`geIH$:O:gEf+B+Y[J^<W`yS85NO*{8aE~5FQkH%DXA"sR$
 local-user admin privilege level 15
 local-user admin service-type terminal ssh
#
interface Vlanif1
#
interface Vlanif99
 ip address 192.168.200.1 255.255.255.0
#
interface GigabitEthernet0/0/1
 port link-type access
 port default vlan 99
#
interface GigabitEthernet0/0/2
#
interface GigabitEthernet0/0/3
#
interface GigabitEthernet0/0/4
#
interface GigabitEthernet0/0/5
#
interface GigabitEthernet0/0/6
#
interface GigabitEthernet0/0/7
#
interface GigabitEthernet0/0/8
#
interface GigabitEthernet0/0/9
#
interface GigabitEthernet0/0/10
#
interface GigabitEthernet0/0/11
#
interface GigabitEthernet0/0/12
#
interface GigabitEthernet0/0/13
#
interface GigabitEthernet0/0/14
#
interface GigabitEthernet0/0/15
#
interface GigabitEthernet0/0/16
#
interface GigabitEthernet0/0/17
#
interface GigabitEthernet0/0/18
#
interface GigabitEthernet0/0/19
#
interface GigabitEthernet0/0/20
#
interface GigabitEthernet0/0/21
#
interface GigabitEthernet0/0/22
#
interface GigabitEthernet0/0/23
#
interface GigabitEthernet0/0/24
#
interface GigabitEthernet0/0/25
#
interface GigabitEthernet0/0/26
#
interface GigabitEthernet0/0/27
#
interface GigabitEthernet0/0/28
#
interface GigabitEthernet0/0/29
#
interface GigabitEthernet0/0/30
#
interface GigabitEthernet0/0/31
#
interface GigabitEthernet0/0/32
#
interface GigabitEthernet0/0/33
#
interface GigabitEthernet0/0/34
#
interface GigabitEthernet0/0/35
#
interface GigabitEthernet0/0/36
#
interface GigabitEthernet0/0/37
#
interface GigabitEthernet0/0/38
#
interface GigabitEthernet0/0/39
#
interface GigabitEthernet0/0/40
#
interface GigabitEthernet0/0/41
#
interface GigabitEthernet0/0/42
#
interface GigabitEthernet0/0/43
#
interface GigabitEthernet0/0/44
#
interface GigabitEthernet0/0/45
#
interface GigabitEthernet0/0/46
#
interface GigabitEthernet0/0/47
#
interface GigabitEthernet0/0/48
#
interface GigabitEthernet0/0/49
#
interface GigabitEthernet0/0/50
#
interface GigabitEthernet0/0/51
#
interface GigabitEthernet0/0/52
#
interface NULL0
#
stelnet ipv4 server enable
stelnet ipv6 server enable
#
user-interface con 0
 authentication-mode aaa
user-interface vty 0 4
 authentication-mode aaa
user-interface vty 16 20
#
dot1x-access-profile name dot1x_access_profile
#
mac-access-profile name mac_access_profile
#
return  

五、Python代码

import os
import paramiko
from paramiko import SSHClient
from paramiko import SFTPClient
tran = paramiko.Transport(('192.168.200.1',22))
tran.connect(username='python',password='python@network')
sftp = paramiko.SFTPClient.from_transport(tran)
local_path = r'D:\20240308'
remote_path = '/config.cfg'
sftp.get(remote_path,local_path)

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

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

相关文章

JAVA实现图像取模

JAVA对图像取模 就是图片变成点阵 原图 取模效果图 代码如下&#xff1a; public static void main(String[] args) throws IOException {try {// 读取图像文件BufferedImage image ImageIO.read(new File("C:/Users/xiaol/Desktop/img/0.jpg"));// 定义阈值&am…

模拟实现strlen函数

一、逐个计数法 #include<assert.h> #include<stdio.h>size_t my_strlen(const char* p) {int count 0;assert(p);//断言while (*p ! \0){p;count;}return count; }int main() {char str[] "hello world";size_t len my_strlen(str);printf("%d…

听 GPT 讲 client-go 源代码 (23)

分享更多精彩内容&#xff0c;欢迎关注&#xff01; File: client-go/kubernetes/scheme/register.go 在client-go项目中&#xff0c;client-go/kubernetes/scheme/register.go文件的作用是进行Kubernetes API对象的Scheme注册。 Scheme是一个用于序列化和反序列化Kubernetes A…

抖音视频评论采集工具|短视频批量下载软件

《抖音视频评论采集工具——解放双手的智能助手》 在数字化时代&#xff0c;抖音视频已成为人们获取信息、娱乐放松的重要来源之一。针对抖音视频评论的采集需求&#xff0c;我们推出了一款功能强大的软件&#xff0c;让您轻松实现评论批量提取&#xff0c;QQ:290615413提高工作…

stm32学习笔记:SPI通信协议原理(未完)

一、SPI简介(serial Peripheral Interface&#xff08;串行 外设 接口&#xff09;) 1、电路模式&#xff08;采用一主多从的模式&#xff09;、同步&#xff0c;全双工 1 所有SPI设备的SCK、MOSI、MISO分别连在一起 2 主机另外引出多条SS控制线&#xff0c;分别接到各从机的S…

二维码门楼牌管理系统应用场景:商业与零售业发展的助推器

文章目录 前言一、二维码门楼牌管理系统的基本功能二、商业和零售业中的应用场景三、二维码门楼牌管理系统的优势分析四、结论 前言 在数字化时代的浪潮中&#xff0c;二维码门楼牌管理系统凭借其独特的优势&#xff0c;正在逐步成为商业和零售业发展的新宠。它不仅能够为商家…

LLMs在BI中的运用

现有的BI分析存在以下一些问题&#xff1a; 原始数据入库规整要求比较高。业务过程产生的数据需要经过一些清洗等前置处理后才能够进行后续的BI分析使用。业务部门的数据分析过度依赖于技术部门。而业务与技术之间由于对分析需求理解上的差异&#xff0c;往往需要繁琐的沟通与…

六、长短时记忆网络语言模型(LSTM)

为了解决深度神经网络中的梯度消失问题&#xff0c;提出了一种特殊的RNN模型——长短期记忆网络&#xff08;Long Short-Term Memory networks, LSTM&#xff09;&#xff0c;能够有效的传递和表达长时间序列中的信息并且不会导致长时间前的有用信息被忽略。 长短时记忆网络原理…

springboot244基于SpringBoot和VUE技术的智慧生活商城系统设计与实现

智慧生活商城系统的设计与实现 摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&…

【wine】winetricks部署一个windows xp 应用程序的基础运行环境

AI 的资料 我想基于wintricks的“安装windows dll 或组件”功能&#xff0c;安装一个基础的windows xp运行环境&#xff0c;应当安装那些项目&#xff1f; 为了基于winetricks创建一个基础的Windows XP运行环境&#xff0c;您应该考虑安装以下项目以提高兼容性&#xff1a; 核…

非常好用的Java诊断工具Arthas(阿尔萨斯)

小伙伴们好&#xff0c;欢迎关注&#xff0c;一起学习&#xff0c;无限进步 文章目录 Window 安装Linux 安装SpringBoot 整合 arthas其他使用场景 Arthas是阿里巴巴开源的一款Java诊断工具&#xff0c;可以用于线上诊断问题、监控应用性能等。支持 Linux/Mac/Windows&#xff0…

3D-Genome | Hi-C互作矩阵归一化指南

Hi-C 是一种基于测序的方法&#xff0c;用于分析全基因组染色质互作。它已广泛应用于研究各种生物学问题&#xff0c;如基因调控、染色质结构、基因组组装等。Hi-C 实验涉及一系列生物化学反应&#xff0c;可能会在输出中引入噪声。随后的数据分析也会产生影响最终输出噪声&…

【C++】浅谈 vector 迭代器失效 深拷贝问题

目录 前言 一、底层空间改变 【错误版本1】 &#x1f31f;【解答】正确版本 ​ 【错误版本2】 &#x1f31f;【解答】正确版本 二、指定位置元素的删除操作--erase 【错误版本1】 &#x1f31f;【解答】 【错误版本2】 &#x1f31f;【解答】 三、深拷贝问题 前言 迭…

基于Jupyter快速入门Python,Numpy,Scipy,Matplotlib

文章目录 Jupyter 和 Colab 笔记本PythonPython 版本基础数据类型数字Numbers布尔值Booleans字符串Strings 容器列表List字典Dictionaries集合Sets元组Tuples 函数类 Numpy数组Array数组索引Array indexing数据类型DatatypesArray math广播Broadcasting Scipy图像操作MATLAB文件…

Pytorch_lightning先前版本的官方文档地址

https://lightning.ai/docs/pytorch/1.4.2/https://lightning.ai/docs/pytorch/1.4.2/ Pytorch_lightning更新到2后&#xff0c;和之前版本的变化较大&#xff0c;以前原有的api被删除了 比如&#xff1a;on_pretrain_routine_start 官方也没有在显眼的位置放置先前版本的文档…

3D数字孪生运行不起来?该检查你的电脑配置了

运行3D数字孪生项目通常需要一定的计算资源和图形处理能力。以下是一些常见的电脑配置要求&#xff0c;可以作为参考&#xff1a;1处理器&#xff08;CPU&#xff09;&#xff1a;推荐使用多核心处理器&#xff0c;如Intel Core i7或更高级别的处理器。较高的时钟频率和较大的缓…

3DES算法的起源与演进:保障信息安全的重要里程碑

title: 3DES算法的起源与演进&#xff1a;保障信息安全的重要里程碑 date: 2024/3/8 21:25:19 updated: 2024/3/8 21:25:19 tags: 3DES算法起源安全性增强三次迭代加密密钥管理复杂效率对比AES应用场景广泛Python实现示例 一、3DES算法的起源与演进 3DES算法是DES算法的增强版…

粉嘟嘟的免费wordpress模板

粉色好看的wordpress免费模板&#xff0c;用免费wordpress模板也可以搭建网站。 https://www.wpniu.com/themes/11.html

利用Python副业赚钱,看完这篇你就懂了!_自学python能干些什么副业?

Python都可以做哪些副业&#xff1f; 1、兼职处理数据Excel整理数据功能虽然很强大&#xff0c;但在Python面前&#xff0c;曾经统治职场的它也的败下阵来。因为Python在搜集数据整理分析数据的过程中更加便捷&#xff0c;通过几行代码还可以实现自动化操作。 如果你学会Pyth…

VSCode国内镜像下载方法

VSCode国内镜像下载方法&#xff1a; 找到下载界面&#xff0c;点击下载后&#xff0c;发现下载速度非常慢。 复制下载链接&#xff0c;然后替换图中画线部分&#xff1a; 改为&#xff1a;vscode.cdn.azure.cn 然后将链接粘贴到浏览器回车&#xff0c;会发现嗖的一下就好了