前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网工Python之路之netmiko模块实验(一)初来乍到

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

作者头像
释然
发布2022-10-27 19:27:15
1.7K0
发布2022-10-27 19:27:15
举报
文章被收录于专栏:释然IT杂谈释然IT杂谈

前言:

哈喽,大家好,我又来了!前面我们已经对环境搭建,paramiko模块做了一些实验探讨。 感谢@弈心大神@朱嘉盛大佬两位的传道。

如果把 paramiko 比做手动挡汽车,netmiko 则可以说是自动挡汽车。来吧,快上车!快上车!今天我们就来初识一下 netmiko 模块。(公众号:释然IT杂谈)

本 netmiko 实验与前序 paramiko 等实验无前后关系,可直接开始阅读,但建议使用 netmiko 之前,先了解及操作一下 paramiko。

代码语言:javascript
复制
 

实验背景:

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 作为管理,需做到能手工逐台登录,初始化配置如下:

代码语言:javascript
复制

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 都帮咱们完美屏蔽掉了。

代码语言:javascript
复制
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)

执行脚本:

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

实验结果检查:

代码语言:javascript
复制
display current-configuration interface LoopBack0

实验扩展:

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

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

实验小结:

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 拓扑如下,只开启LSW1,用于测试。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档