《网络工程师的Python之路》(netmiko实验7,文件传送,华为)

您所在的位置:网站首页 跳板机传输文件 《网络工程师的Python之路》(netmiko实验7,文件传送,华为)

《网络工程师的Python之路》(netmiko实验7,文件传送,华为)

2024-04-18 22:30| 来源: 网络整理| 查看: 265

哈喽,大家好,我又来了!这篇我们来探讨一下如何用netmiko向华为设备传送文件。

本专栏简介及目录入口,如果您不知道从何读起,建议从这篇《目录》开始,连接如下:

《网络工程师的Python之路》作者 @弈心 大神用linux+思科。我学习参考他的思路,用 windows+华为做实验。本实验他的相关链接如下,对应实验7。

本文知友@雨过晴天 拓展:Netmiko-文件传送(file_transfer)-华为(真机实验)

实验拓扑

【SSH 、FTP客户端】Win10 虚拟网卡,IP 为 192.168.11.2/24,桥接到云彩,Python所在。

【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。

【SSH 、FTP服务端】Layer3Switch-x,vlanif 1 的 IP 为 192.168.11.1x/24。交换机型号是S5700。

实验背景

我们需要把实验6的拓扑进行倒回,恢复用户级别等,可以直接用实验5的拓扑,开启SCP,FTP等服务器功能。大神的思科实验中从netmiko引入了file_transfer来实现,我们直接将代码翻译成华为版的。

import netmiko from netmiko import ConnectHandler,file_transfer sw1 = {'device_type':'huawei', 'ip':'192.168.11.11', 'username':'python', 'password':'123'} with ConnectHandler(**sw1) as connect: print ("已经成功登陆交换机" + sw1['ip']) output = file_transfer(connect, source_file="text.txt", dest_file="text.txt", file_system="flash:", direction="put") print (output)

代码的意愿是用python脚本将同目录的text.txt文件传送到Layer3Switch-1上。我们跑一下脚本看看,返回报错提示设备类型不支持。也就是目前版本的netmiko(3.4.0)还不支持华为设备的文件传输。

有了实验6的基础,根据报错的信息,我们可以去摸索一下源文件看看。

如果你很牛的话,可以重新这些类和方法,实现目标。在下无能为力,告辞了!本章结束,感谢阅读,欢迎关注点赞收藏评论交流。论哈哈!

实验背景如此,那么我们遇到这种要怎么用netmiko来实现文件的传输呢?!

实验目的

(1)FTP(或SCP)将同目录下的text.txt送入设备Layer3Switch-1(其实这部分不是python内容,但过程也记录下吧)。

(2)通过netmiko登录设备Layer3Switch-2,FTP连接设备Layer3Switch-1,拷贝text.txt。

实验过程

前期是网络已经打通,设备账号都配置准确,可手工登录了。(不再赘述!)

第1步,开启设备Layer3Switch-1的FTP功能

Layer3Switch-1 是服务器端。

sys ftp server enable aaa local-user python ftp-directory flash: local-user python service-type telnet ssh ftp

第2步,检查FTP是否可成功登陆设备Layer3Switch-1

从交换机上看一下:

第3步,PC通过FTP将文件text.txt,Layer3Switch-1

其实FTP工具多如牛毛,可以随意选用一个界面工具,我这就徒手送文件吧。

bin put text.txt

回到交换机上,可以对一下大小,时间等,这样我们就成功把text.txt从PC送到了交换机上了。

至此,我们实现了实验目的(1),如果FTP不是很安全或者被限制了,要用SCP上传要怎么弄?童鞋们思考下哈。大体思路是差不多的。

第4步,netmiko登录Layer3Switch-2,FTP到Layer3Switch-1拷贝text.txt

现在text.txt文件已经在Layer3Switch-1的flash:/目录了,我们用netmiko登录Layer3Switch-2,模拟指令交互模式,拷贝text.txt文件到Layer3Switch-2的flash:/目录。咱们已经不是“初学者”了,用上connect.send_command_timing()直接出发吧。(timing这条函数可以帮我们屏蔽掉一些等待控制等,彰显netmiko的各种人性化哈哈。)

import netmiko from netmiko import ConnectHandler,file_transfer sw1 = {'device_type':'huawei', 'ip':'192.168.11.12', 'username':'python', 'password':'123', 'secret':'123'} with ConnectHandler(**sw1) as connect: print ("已经成功登陆交换机" + sw1['ip']) output = connect.send_command_timing(command_string="dir",) output += connect.send_command_timing(command_string="ftp 192.168.11.11") output += connect.send_command_timing(command_string="python") output += connect.send_command_timing(command_string="123") output += connect.send_command_timing(command_string="dir") output += connect.send_command_timing(command_string="get text.txt") output += connect.send_command_timing(command_string="quit") print(output)

除了connect.send_command_timing()外,其它与早前实验代码几乎一样,output后面的+=表示追加的意思。

我们到Layer3Switch-2设备上查看一下吧。

实验小结

好了,实验目标是达到了。为了简化过程,突出重点,实验中我们其实省略了try-except等异常判断等。比如做版本升级、备份配置文件等需要多设备传递文件的场景中,我们可以手工传一份到其中一台(如Layer3Switch-1),其它的设备用python脚本登录到它这里来取这个文件。这其实就是跳板机的概念了。另外,如果把Layer3Switch-1当成FTP客户端,把PC当成FTP服务器端,是不是一开始就可以用netmiko登录后找PC进行拷贝文件呢,而不是手工?还有,FTP可以实现了,SCP呢?大家都可以试试看。

都看到这里来了,留个脚印再都吧 :)

感谢阅读,欢迎关注点赞收藏评论交流。

2021年7月于广东汕头



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3