详解Python如何使用Netmiko进行文件传输
作者:wljslmz 发布时间:2021-06-20 19:49:17
在网络设备管理中,传输配置文件、镜像文件等是经常需要进行的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。本文将介绍如何使用Netmiko的SCP函数进行文件传输。
Netmiko简介
Netmiko是一个用于连接和管理各种网络设备的Python库,它是Paramiko的一个扩展。Netmiko支持大量的网络设备,包括Cisco、Juniper、Arista、HP等等。Netmiko提供了许多用于连接、发送命令、传输文件等的函数,非常方便和易用。
在本文中,我们将使用Netmiko的SCP函数来传输文件。SCP是一个安全的文件传输协议,它使用SSH协议来传输文件。与FTP和TFTP等其他文件传输协议不同,SCP使用加密的连接,可以提供更高的安全性。SCP在传输大文件时效率较低,但对于传输小文件,它是一个非常好的选择。
Netmiko安装
在使用Netmiko之前,需要先安装它。Netmiko可以使用pip来安装,使用以下命令即可:
pip install netmiko
使用Netmiko的SCP函数传输文件
Netmiko的SCP函数可以用于从设备传输文件到本地计算机,也可以用于从本地计算机传输文件到设备。下面我们将介绍如何使用Netmiko的SCP函数来传输文件。
从设备传输文件到本地计算机
从设备传输文件到本地计算机需要使用Netmiko的file_transfer
函数。该函数需要四个参数:远程路径、本地路径、文件名和文件传输方向(从远程设备到本地计算机)。其中远程路径和本地路径可以是相对路径或绝对路径。文件传输方向需要使用字符串get
来指定。以下是使用Netmiko的file_transfer
函数传输文件的示例代码:
from netmiko import ConnectHandler
device = {
'device_type': 'cisco_ios',
'ip': '192.168.1.1',
'username': 'username',
'password': 'password',
}
remote_path = 'flash:/config.txt'
local_path = '/home/user/config.txt'
file_name = 'config.txt'
with ConnectHandler(**device) as ssh:
ssh.file_transfer(
remote_file=remote_path,
local_file=local_path,
file_system='flash:',
direction='get'
)
在上面的示例代码中,我们首先定义了一个设备字典,然后使用ConnectHandler
函数连接设备。在连接设备之后,我们使用file_transfer
函数传输文件。remote_file
参数指定了远程设备上的文件路径,local_file
参数指定了本地计算机上的文件路径,file_system
参数指定了文件所在的文件系统,direction
参数指定了传输方向。运行上述代码,即可从设备传输文件到本地计算机。
从本地计算机传输文件到设备
从本地计算机传输文件到设备也需要使用Netmiko的file_transfer
函数。该函数需要四个参数:远程路径、本地路径、文件名和文件传输方向(从本地计算机到远程设备)。其中远程路径和本地路径可以是相对路径或绝对路径。文件传输方向需要使用字符串put
来指定。以下是使用Netmiko的file_transfer
函数从本地计算机传输文件到设备的示例代码:
from netmiko import ConnectHandler
device = {
'device_type': 'cisco_ios',
'ip': '192.168.1.1',
'username': 'username',
'password': 'password',
}
remote_path = 'flash:/config.txt'
local_path = '/home/user/config.txt'
file_name = 'config.txt'
with ConnectHandler(**device) as ssh:
ssh.file_transfer(
remote_file=remote_path,
local_file=local_path,
file_system='flash:',
direction='put'
)
在上面的示例代码中,我们同样首先定义了一个设备字典,然后使用ConnectHandler
函数连接设备。在连接设备之后,我们使用file_transfer
函数传输文件。remote_file
参数指定了远程设备上的文件路径,local_file
参数指定了本地计算机上的文件路径,file_system
参数指定了文件所在的文件系统,direction
参数指定了传输方向。运行上述代码,即可从本地计算机传输文件到设备。
来源:https://juejin.cn/post/7228856162132197433


猜你喜欢
- js 日期 获取今天、昨天、明天第一个函数function getDay(day){ var today = ne
- 最近在研究WEB布局,遇到<H1>标签了,<H1>标签很重要。在一般教程中都这么说,<H1>标签在同一页
- 第一种方案、最简单、普通的方法:SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TO
- 最近在看红楼梦,看的诗词多了,时不时的也想来一句...这几天刚看看到了underscore.js的防抖和节流的部分,正好又去复习了这部分内容
- 服务端:#!/usr/bin/envimport SocketServerclass myMonitorHandler(SocketServ
- 因为正则不够完善,所以代码中不能直接出现 <? 和 ?>如果是字符串,可以拆开写 "<" + &quo
- 电脑面前的你,是否也希望能让电脑听命于你? 当你累的时候,只需说一声“我累了”,电脑就会放着优雅的轻音乐来让你放松。
- 一、问题描述在用python开发时经常用到logging这个包,根据官方示例,如果要指定日志级别可以写成如下的方式。import loggi
- 相对或者绝对import 更多的复杂部分已经从python2.5以来实现:导入一个模块可以指定使用绝对或者包相对的导入。这个计划将移动到使绝
- 我有个需求就是抓取一些简单的书籍信息存储到mysql数据库,例如,封面图片,书名,类型,作者,简历,出版社,语种。我比较之后,决定在亚马逊来
- 如下所示:# #### dict中将key相同的字典合并在一个对象里"""a = {"a"
- 以前写过《 10条影响CSS渲染速度的写法与建议》,今天放些数据出来,供参考;首先说明一点,CSS对网页的最后渲染出来的速度影响非
- K线数据提取依据原有数据集格式,按要求生成新表:1、每分钟的close数据的第一条、最后一条、最大值及最小值,2、每分钟vol数据的增长量(
- 一、基于json模块的存储、读取数据names_writer.pyimport jsonnames = ['joker',&
- 代码编辑环境Win10+(Pycharmm or Vscode)+PyQt 5.14.2功能实现静态作图:数据作图,取决于作图函数,可自行修
- flash param参数和属性下列标记属性和参数描述了由“发布”命令创建的 HTML 代码。在编写自己的用于显示 Flash 内容的 HT
- babel-plugin-import 实现自动按需引入Vant 支持一次性导入所有组件,引入所有组件会增加代码包体积,因此不推荐这种做法b
- 进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调
- 喜欢用 Python 做项目的小伙伴不免会遇到这种情况:做图表时,用哪种好看又实用的可视化工具包呢?之前文章里出现过漂亮的图表时,也总有读者
- 正文首先得说明的是,Python的类分为经典类 和 新式类经典类是python2.2之前的东西,但是在2.7还在兼容,但是在3之后的版本就只