社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

网工Python之路之netmiko模块实验(一)初来乍到

释然IT杂谈 • 4 年前 • 1002 次点击  
前言:
哈喽,大家好,我又来了!前面我们已经对环境搭建,paramiko模块做了一些实验探讨。 感谢@弈心大神@朱嘉盛大佬两位的传道。
如果把 paramiko 比做手动挡汽车,netmiko 则可以说是自动挡汽车。来吧,快上车!快上车!今天我们就来初识一下 netmiko 模块。(公众号:释然IT杂谈)
本 netmiko 实验与前序 paramiko 等实验无前后关系,可直接开始阅读,但建议使用 netmiko 之前,先了解及操作一下 paramiko。

  
  网工Python之路之基础笔记(一)
网工Python之路之基础笔记(二)
网工Python之路之paramiko 模块实验(一)初来乍到
网工Python之路之paramiko 模块实验(二)循环遍历
网工Python之路之paramiko 模块实验(三)读取文件
网工Python之路之paramiko 模块实验(四)分组操作  
网工Python之路之paramiko 模块实验(五)异常处理
网工Python之路之paramiko 模块实验(六)FTP推送备份文件
网工Python之路之paramiko 模块实验(七)回显保存成文件,Win中处理空行   
实验背景:

Netmiko 是作者 Kirk Byers 在 2014 年底基于 paramiko 开始开发的。它做了很多改进,如精简了 show (华为就是 display )命令的执行和回显内容的读取,简化了设备配置命令,支持了多厂商的设备和平台。

实验拓扑:
【SSH 客户端】Win10 虚拟网卡,IP 为 192.168.242.2/24,桥接到云彩,Python所在。
【透明交换机】SW1(启动即可,无需配置,给云彩扩展端口使用)。
【SSH 操作对象】Layer3Switch-x,IP为 192.168.242.1x/24。
实验目的:

使用 netmiko 模块登录交换机 Layer3Switch-2 ,给它的 LoopBack0 口配置 IP 2.2.2.2/32, 之后保存退出,打印回显。

实验准备:
首先我们联网安装 netmiko 模块。如果不考虑 Windows 系统【环境变量】等设置的话,我们可以直接 cd 到安装 Python 程序对应的 pip.exe 所在的文件夹路径中,执行 pip install netmiko。(公众号:释然IT杂谈)

之后一路跑码(反正我是看不懂这些码哈),停下来是 Successfully 字眼,安装成功。

按照拓扑,每台交换机 vlan 1 都配置 vlanif 的 IP 作为管理,需做到能手工逐台登录,初始化配置如下:

sysname LSW1
aaa
# 密码明文 123
 local-user python password cipher #*C>*$C`S!INZPO3JBXBHA!!
 local-user python privilege level 3
 local-user python service-type ssh

interface Vlanif1
 ip address 192.168.242.11 255.255.255.0
# 公众号:释然IT杂谈
stelnet server enable
# 下面这条很关键,我一开始没配置这条,一直 ssh 反馈有错误。
# 模拟器的产品手册说这条是默认值,但测试后需要手动配置。
ssh authentication-type default password

user-interface vty 0 4
 authentication-mode aaa
 protocol inbound ssh
实验前检查:

1.按之前实验套路,PC 到 LSW2 的网络连通性,如不通需要排网络,本文此处描述从简。

2.检查 LSW2 的 LoopBack0 情况。

Python代码:
看了下面的代码,是不是感觉比 paramiko 简介太多太多了,各种“多余”的操作,netmiko 都帮咱们完美屏蔽掉了。
from netmiko import ConnectHandler

S2 = {'device_type':'huawei',
      'ip':'192.168.242.12',
      'username':'python',
      'password':'123'}

connect = ConnectHandler(**S2)
print('已经成功登陆交换机' + S2['ip'])

# netmiko 已集成休眠、截屏等操作
config_commands = ['interface LoopBack 0','ip add 2.2.2.2 32']
# 如果需要系统视图下执行,可用 send_config_set ,会自动执行 sys
# 截屏直接作为函数返回
output = connect.send_config_set(config_commands)
print(output)

print('\n======我是分割线======\n')
# 公众号:释然IT杂谈
# 如果需要用户视图下执行,可用 send_command
# 截屏直接作为函数返回
result = connect.send_command('display current-configuration interface LoopBack 0')
print(result)
执行脚本:

跑跑代码,等待回显过程展示。

实验结果检查:
display current-configuration interface LoopBack0
实验扩展:

小伙伴想执行其他友商设备怎么办,这里以思科为例略微调整成思科类型和命令就行。

拓扑如下,只开启LSW1,用于测试。


实验小结:
好了,我们跟 netmiko 的首次接触实验就完成了。大家已经发现用 netmiko 的话,代码会清晰很多,如果配合我们在 paramiko 实现中的 ip_file、cmd_file 等操作,把“待操作的设备”和“待执行的命令”都独立梳理出来,那代码会更加清晰明了。(公众号:释然IT杂谈)大家还等什么?想一个实际生产应用,然后赶紧动手实践起来吧。


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130174