首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >网工Python之路之paramiko 模块实验(六)FTP推送备份文件

网工Python之路之paramiko 模块实验(六)FTP推送备份文件

作者头像
释然IT杂谈
发布于 2022-10-27 11:06:55
发布于 2022-10-27 11:06:55
98900
代码可运行
举报
文章被收录于专栏:释然IT杂谈释然IT杂谈
运行总次数:0
代码可运行

感谢知乎两位大佬:@弈心和@朱嘉盛

@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。

@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。

小编这里采用eve-ng+liunx来模拟实践思科部分的实验效果,以及采用ensp+windows复现一遍华为的实验。

思科实验:

平台工具:

  • 实验平台:WIN10
  • 使用工具:Evn-ng、python 3.6.8

实验拓扑:

注意:

书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。

【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。

实验背景:

日常较多的备份方式有两种:

① 登录设备执行show run,然后抓取回显,保存成配置文件。

② FTP/SCP等方式登录网元,拷贝配置文件 startup-config文件。

方法①效率较低;

方法②需要每台网元都开启FTP服务器功能,安全性不高。

打破下惯性思维,我们能不能把方法②的客户端和服务器角色给反过来呢?这样不就只需一台服务器开启FTP server功能。待备份的网元都当FTP客户端角色即可,无需任何额外配置。 (日常交流中受群友启发,可见交流的重要性哈。感谢群友 @白天数星星 )

实验目的:

1)在Win10上部署FTP服务器,尝试手工登录网元完成一次配置文件推送。

2)使用paramiko实现自动登录网元(LSWx),批量推送配置文件到Win10上。

实验过程

实验拓扑搭建、账号配置调测等在“环境搭建”文章中我们已详细介绍,这里从略。

第 1 步,WIN10上部署FTP服务器

我们找一个很轻巧的Win10环境下可运行的FTP服务端软件3CDaemon,配置FTP账号密码,登录目录,点击“应用”、“确定”,然后启动FTP服务器功能。

梳理一下FTP服务器信息:

1、地址:192.168.242.1,网元的备份文件推送到这台设备,即WIN10真机,python所在。

2、目录:desktop\study\net_py\paramiko\lab6(同学们自行设定。)

3、FTP账号:python

4、FTP密码:123456

第 2 步,手工测试FTP推送备份文件

我们登上LSW1(192.168.242.11),从网元手工登录ftp服务器(192.168.242,1),执行一次备份文件推送。

至此,我们实验目的(1)完成。

第 3 步,创建Python脚本文件

我准备了如下的python代码。这里强调下,这实验我们主要是讨论FTP推送备份文件,因此,我把代码最简化,去掉了try-expect,设备表文件,指令表文件,交互输入用户名密码等功能。大家在实际生产中需要配套上其它功能代码块,方能更好的适配生产环境。其它功能块大家可查阅paramiko前序几篇文章。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import paramiko
import time
username = 'python'
password = '123'
iplist = ['192.168.242.11','192.168.242.12','192.168.242.13','192.168.242.14','192.168.242.15']
for ip in iplist:
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip,username=username,
                       password=password,look_for_keys=False)
    print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
    print('已经成功登陆交换机 ' + ip)
    command = ssh_client.invoke_shell()
    command.send('conf t\n')
    time.sleep(0.5)
    command.send('ip ftp username python\n')
    time.sleep(0.5)
    command.send('ip ftp password 123456\n')
    time.sleep(0.5)
    command.send('exit\n')
    time.sleep(0.5)
    command.send('copy startup-config  ftp:\n')
    time.sleep(0.5)
    command.send('192.168.242.1 \n')
    time.sleep(0.5)
    command.send(ip+'_config.txt\n')
    time.sleep(0.5)
    output = command.recv(65535).decode('GB2312')
    print(output)
ssh_client.close()

前序文章中,我们用command.recv(65535).decode('ASCII')进行解码,如果这里还用ASCII的话会报错,因为此时的回显中带有中文。对于处理中文的解码,我一般尝试GB2312或gbk。(反正就是试了再试,看看哪个成,网工嘛,非开发人员。具体深入原理我也不懂= =)。

第 4 步,运行Python脚本

好了,先清空一下备份文件夹,运行脚本,截图如下。有小伙伴问我,为啥你脚本一准备好,一运行就能成功?!其实哪有那么美好的事情啊?输出文章前,我也是得反复调整代码,反复测试的,反复跳坑填坑。实验过程中,准备好代码跑起来后出错是很正常的现象,如何进行调测才关键。

我们打开任意一个config.txt文件看看,其实就是网元配置文件。

华为实验:

平台工具:

  • 实验平台:WIN10
  • 使用工具:eNSP v1.3.00.100、python 3.7.3

实验拓扑:

注意:

书中使用了 192.168.2.0/24 ,我这里才有eve桥接的虚拟网段192.168.242.0/24来演示本次实验。

【SSH 服务端】LSW x,IP为 192.168.242.1x/24,连接到透明交换机SW1。

实验背景:

日常较多的备份方式有两种:

① 登录设备执行display cur,然后抓取回显,保存成配置文件。

② FTP/SCP等方式登录网元,拷贝配置文件 flash:/vrpcfg.zip。

方法①效率较低;

方法②需要每台网元都开启FTP服务器功能,安全性不高。

打破下惯性思维,我们能不能把方法②的客户端和服务器角色给反过来呢?这样不就只需一台服务器开启FTP server功能。待备份的网元都当FTP客户端角色即可,无需任何额外配置。 (日常交流中受群友启发,可见交流的重要性哈。感谢群友 @白天数星星 )

实验目的:

1)在Win10上部署FTP服务器,尝试手工登录网元完成一次配置文件推送。

2)使用paramiko实现自动登录网元(Layer3Switch-x),批量推送配置文件到Win10上。

实验过程

实验拓扑搭建、账号配置调测等在“环境搭建”文章中我们已详细介绍,这里从略。

第 1 步,WIN10上部署FTP服务器

我们找一个很轻巧的Win10环境下可运行的FTP服务端软件3CDaemon,配置FTP账号密码,登录目录,点击“应用”、“确定”,然后启动FTP服务器功能。

梳理一下FTP服务器信息:

1、地址:192.168.242.1,网元的备份文件推送到这台设备,即WIN10真机,python所在。

2、目录:desktop\study\net_py\paramiko\lab6(同学们自行设定。)

3、FTP账号:python

4、FTP密码:123456

第 2 步,手工测试FTP推送备份文件

我们登上LSW1(192.168.242.11),从网元手工登录ftp服务器(192.168.242,1),执行一次备份文件推送。

至此,我们实验目的(1)完成。

第 3 步,创建Python脚本文件

我准备了如下的python代码。这里强调下,这实验我们主要是讨论FTP推送备份文件,因此,我把代码最简化,去掉了try-expect,设备表文件,指令表文件,交互输入用户名密码等功能。大家在实际生产中需要配套上其它功能代码块,方能更好的适配生产环境。其它功能块大家可查阅paramiko前序几篇文章。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import paramiko
import time

username = 'python'
password = '123'

iplist = ['192.168.242.11','192.168.242.12','192.168.242.13','192.168.242.14','192.168.242.15']

for ip in iplist:

    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=ip,username=username,
                       password=password,look_for_keys=False)
    
    print('=-=-=-=-=-=-=-=-=-=-=-=-=-=')
    print('已经成功登陆交换机 ' + ip)
    command = ssh_client.invoke_shell()

    command.send('ftp 192.168.242.1\n')
    time.sleep(0.5)
    command.send('python\n')
    time.sleep(0.5)
    command.send('123456\n')
    time.sleep(0.5)
    command.send('bin\n')
    command.send('put vrpcfg.zip '+ip +'_vrpcfg.zip'+'\n')
    time.sleep(0.5)
    command.send('quit\n')
    time.sleep(0.5)

    output = command.recv(65535).decode('GB2312')
    print(output)

ssh_client.close()

前序文章中,我们用command.recv(65535).decode('ASCII')进行解码,如果这里还用ASCII的话会报错,因为此时的回显中带有中文。对于处理中文的解码,我一般尝试GB2312或gbk。(反正就是试了再试,看看哪个成,网工嘛,非开发人员。具体深入原理我也不懂= =)。

第 4 步,运行Python脚本

好了,先清空一下备份文件夹,运行脚本,截图如下。有小伙伴问我,为啥你脚本一准备好,一运行就能成功?!其实哪有那么美好的事情啊?输出文章前,我也是得反复调整代码,反复测试的,反复跳坑填坑。实验过程中,准备好代码跑起来后出错是很正常的现象,如何进行调测才关键。

我们打开任意一个vrpcfg.zip文件看看,其实就是网元配置文件。

实验小结

网元的配置备份方法其实挺多的,之前我自己的设备备份思路并非如此,也算是“生产边学习边交流边实践边提升”吧。针对日常一些实际生产的小套路,我们最好能抽空静下来梳理沉淀一番,形成一个一个功能小模块。后续通过这些功能小模块间的组合应用,编织我们的生产。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 释然IT杂谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
网工Python之路之paramiko 模块实验(二)循环遍历
@弈心大佬的实验主要是基于 linux 系统、思科设备或 GNS3 模拟器完成。这里小编采用eve-ng+linux来模拟。
释然IT杂谈
2022/10/27
1.1K0
网工Python之路之paramiko 模块实验(二)循环遍历
网工Python之路之paramiko 模块实验(五)异常处理
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
释然IT杂谈
2022/10/27
9050
网工Python之路之paramiko 模块实验(五)异常处理
网工Python之路之paramiko 模块实验(七)回显保存成文件,Win中处理空行
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
释然IT杂谈
2022/10/27
8400
网工Python之路之paramiko 模块实验(七)回显保存成文件,Win中处理空行
网工Python之路之paramiko 模块实验(一)初来乍到
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
释然IT杂谈
2022/10/27
1.7K0
网工Python之路之paramiko 模块实验(一)初来乍到
网工Python之路之paramiko 模块实验(四)分组操作
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
释然IT杂谈
2022/10/27
8500
网工Python之路之paramiko 模块实验(四)分组操作
网工Python之路之netmiko模块实验(一)初来乍到
哈喽,大家好,我又来了!前面我们已经对环境搭建,paramiko模块做了一些实验探讨。 感谢@弈心大神@朱嘉盛大佬两位的传道。
释然IT杂谈
2022/10/27
2K0
网工Python之路之netmiko模块实验(一)初来乍到
网工Python之路之paramiko 模块实验(三)读取文件
@朱嘉盛大佬考虑到当前在国内华为较为主流,也用 Windows 系统,尝试用华为的真机或者 eNSP 模拟器,把书中提及的实验做一做,方便大家学习记录,方便交流。
释然IT杂谈
2022/10/27
1.1K1
网工Python之路之paramiko 模块实验(三)读取文件
网工Python之路之netmiko模块实验(三)连接多机
希望朋友们学完能根据自己运维网络的实际情况,摸索属于自己运维网络的自动化方案。这次实验我们来讨论下netmiko模块连接多台设备的情况。
释然IT杂谈
2022/10/27
1.8K0
网工Python之路之netmiko模块实验(三)连接多机
网工Python之路之netmiko模块实验(二)推送配置
哈喽,前面我们已经初识了 netmiko 模块。本文我们将通过实验,重点学习 netmiko 向设备进行推送指令,抓去回显的操作。
释然IT杂谈
2022/10/27
1.2K0
网工Python之路之netmiko模块实验(二)推送配置
简单的Python脚本,实现批量设置重复性配置
在上篇文章的基础上优化了脚本,本次采用了getpass模块和for循环进行了优化,具体脚本如下:
释然IT杂谈
2022/10/27
3880
简单的Python脚本,实现批量设置重复性配置
小白想要利用python脚本批量登录网络设备修改配置,看这篇就够了!
1、按照下图,在ensp模拟器上搭建环境,为了演示批量修改设备,龙哥这里实验4台路由器,当然了,如果你电脑性能足够牛逼,你也可以多用几台路由器咯!然后标注好IP地址。
网络工程师笔记
2022/10/31
2.6K0
网络设备传输文件的3种方法
在网络维护中,经常会遇到升级系统软件、备份配置文件等需求,均需要进行PC与设备之间的文件传输。通常选择使用FTP/TFTP进行文件传输。
网络工程师笔记
2021/05/17
2K0
网络设备传输文件的3种方法
一个实用的Linux脚本-备份交换机和OLT设备启动文件
所谓有备而无患,虽说备份不能百分百保证损失,但是却最大程度降低损失,以及保证业务尽快恢复。所以备份在数据领域是非常重要的,特别是核心设备、关键服务尤其重要。 假如您正好有一台Linux服务器,可以跑一些测试脚本,那么您就可以使用在这个脚本进行对一些设备配置文件进行备份,思路于此,但不仅限于此。
爱技术的小黄鸭
2023/06/15
4010
如何使用 Python 脚本自动备份华为路由器和交换机的配置?
在网络设备管理中,定期备份路由器和交换机的配置是至关重要的。备份可以帮助我们恢复设备配置、快速排除故障,以及进行版本控制。在本文中,我们将学习如何使用 Python 脚本自动备份华为路由器和交换机的配置。我们将了解如何通过 SSH 连接设备、执行备份命令,并将备份保存到本地计算机中。
网络技术联盟站
2023/06/09
1.4K0
如何使用 Python 脚本自动备份华为路由器和交换机的配置?
Python通过FTP备份华为交换机配置文件
简单写个小程序实现华为交换机配置备份,代码如下: # more ftp-huawei.py # -*- coding=utf-8 -*- from ftplib import FTP import time,os hostid="192.168.10.100" Today = time.strftime("%Y-%m-%d", time.localtime())#获取当天时间 ftp = FTP()#创建变量 ftp.set_debuglevel(2)#开启debug模式 ftp.connect(h
释然IT杂谈
2020/11/06
1.2K0
Python通过FTP备份华为交换机配置文件
如何使用 Python 脚本自动备份华为路由器和交换机的配置?
完成以上步骤后,您已经成功编写了一个自动备份华为路由器和交换机配置的 Python 脚本。
网络技术联盟站
2023/09/06
1.1K0
如何使用 Python 脚本自动备份华为路由器和交换机的配置?
Python通过paramiko模块备份
1.过程思路 备份配置前,先保存交换机running config到starup config 交换机通过tftp备份配置文件 批量备份交换机配置(通过excel文件保存交换机IP) name ip SUZ-SW-101 10.X.X.1 SUZ-SW-102 10.X.X.2 SUZ-SW-103 10.X.X.3 SUZ-SW-104 10.X.X.4 2.python代码 import xlrd import paramiko import time def ssh_SW(name,ip):
py3study
2020/01/03
8520
Python通过paramiko模块备份
简单的Python脚本,实现ssh登录配置路由器
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
释然IT杂谈
2022/09/23
1.5K0
简单的Python脚本,实现ssh登录配置路由器
python paramiko模块简介
    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。
py3study
2020/01/09
1.2K0
python paramiko模块讲解
Windows下有很多非常好的SSH客户端,比如Putty。在Python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让你轻松使用SSH2协议。
py3study
2020/01/07
2.2K0
推荐阅读
相关推荐
网工Python之路之paramiko 模块实验(二)循环遍历
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验