建筑电工证查询网站,做外贸的网站平台有哪些内容,东莞头条最近15天新闻,大连市城市建设档案馆网站一、背景
为了防止网络设备意外损坏#xff0c;导致配置文件无法恢复#xff0c;可以通过将网络设备的配置文件备份到本地电脑上。
一般情况下#xff0c;设备支持通过FTP、TFTP、FTPS、SFTP和SCP备份配置文件。其中使用FTP和TFTP备份配置文件比较简单#xff0c;但是存在…一、背景
为了防止网络设备意外损坏导致配置文件无法恢复可以通过将网络设备的配置文件备份到本地电脑上。
一般情况下设备支持通过FTP、TFTP、FTPS、SFTP和SCP备份配置文件。其中使用FTP和TFTP备份配置文件比较简单但是存在安全风险。在安全要求比较高的场景中建议使用FTPS、SFTP和SCP备份配置文件。以下仅以SFTP作为示例介绍备份配置文件。
二、 实验信息
1、实验环境 本文采用python主机与网络设备通过网线直连的方式进行实验实操当中我们可以通过已配置完成网络通信并已开通ssh及sftp的网络设备进行配置备份所以说此实验与实操基本一样可以使用本文代码只需修改网络设备信息即可。
2、设备信息
①网络设备
IP:192.168.200.1
usernamepython
passwordpythonnetwork
ssh端口22
目标备份文件/config.cfg
xxxdir
Directory of flash:/Idx Attr Size(Byte) Date Time FileName 0 drw- - Oct 26 2018 05:33:48 dhcp1 drw- - Oct 26 2018 05:33:13 user2 -rw- 13,432 Oct 26 2018 05:33:54 default_ca.cer3 -rw- 36 Jul 12 2017 04:06:24 $_patchstate_reboot4 -rw- 68,955,900 Mar 27 2018 14:25:44 s5720s-li-v200r011c10spc600.cc5 -rw- 0 Mar 06 2024 10:04:48 1.txt6 -rw- 1,407 Oct 26 2018 05:33:57 default_local.cer7 drw- - Oct 07 2023 00:52:56 logfile8 -rw- 120 Oct 07 2023 00:08:35 vrpcfg.zip9 drw- - Oct 26 2018 05:33:13 pmdata10 drw- - Jul 12 2017 04:06:24 $_install_mod11 -rw- 836 Mar 05 2024 14:58:24 rr.bak12 -rw- 836 Mar 05 2024 14:58:24 rr.dat13 -rw- 3,523 Mar 05 2024 15:44:45 config.cfg14 -rw- 2,129 Mar 05 2024 15:44:46 private-data.txt15 drw- - Mar 05 2024 15:44:42 localuser16 -rw- 56,565 Mar 27 2018 14:25:45 s5720s-li-v200r011sph005.pat17 drw- - Oct 26 2018 07:38:19 $_backup18 -rw- 4 Oct 29 2018 00:53:20 snmpnotilog.txt19 -rw- 200 Oct 26 2018 05:33:58 ca_config.ini20 -rw- 1,158,453 Jun 18 2022 20:13:47 help.web21 -rw- 3,004 Jun 23 2022 03:14:35 backup20220626.zip244,164 KB total (57,868 KB free)②python主机信息
ip192.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服务器会话的高级表示集成了TransportChannle和SFTPClientHost keys该类用于创建一个密钥或密码对象
4、对象/类示例
①transport(socket)
# 引入paramiko模块
import paramiko
# 建立Transport对象实例化SSH会话通道
tran paramiko.Transport((192.168.200.1,22))
# 建立SSH会话连接并使用密码进行身份验证
tran.connect(usernamepython,passwordadmin123)
②from_transport
# 引入paramiko模块
import paramiko
# 建立Transport对象实例化SSH会话通道
tran paramiko.Transport((192.168.200.1,22))
# 建立SSH会话连接并使用密码进行身份验证
tran.connect(usernamepython,passwordadmin123)
#定义变量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(usernamepython,passwordadmin123)
# 定义变量sftp并从打开的Transport创建一个SFTP会话连接
sftp paramiko.SFTPClient.from_transport(tran)
# 定义变量local_path
local_path rD:\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(usernamepython,passwordadmin123)
# 定义变量sftp并从打开的Transport创建一个SFTP会话连接
sftp paramiko.SFTPClient.from_transport(tran)
# 定义变量local_path
local_path rD:\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 rD:/文件夹\文件名 导出配置如下 !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 defaultcertificate-check none
#
free-rule-template name default_free_rule
#
portal-access-profile name portal_access_profile
#
aaaauthentication-scheme defaultauthentication-scheme radiusauthentication-mode radiusauthorization-scheme defaultaccounting-scheme defaultlocal-aaa-user password policy administrator password history record number 0password expire 0domain defaultauthentication-scheme radiusradius-server defaultdomain default_adminauthentication-scheme defaultlocal-user admin password irreversible-cipher $1a$I2R%geIH$:O:gEfBY[J^WyS85NO*{8aE~5FQkH%DXAsR$local-user admin privilege level 15local-user admin service-type terminal ssh
#
interface Vlanif1
#
interface Vlanif99ip address 192.168.200.1 255.255.255.0
#
interface GigabitEthernet0/0/1port link-type accessport 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 0authentication-mode aaa
user-interface vty 0 4authentication-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(usernamepython,passwordpythonnetwork)
sftp paramiko.SFTPClient.from_transport(tran)
local_path rD:\20240308
remote_path /config.cfg
sftp.get(remote_path,local_path)