网工Python之路之netmiko模块实验 推送配置

0收藏

0点赞

浏览量:313

2022-04-01

举报

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 模块 4 种设备配置函数, @弈心大神 文章中详细介绍,大家可先行认真阅读。我阅读后简述如下:

(1)send_command():向设备发送一条命令,通常用于查询、排错、保存等命令。
(2)send_config_set():向设备发送一条或多条配置命令,会自动适配到配置模式,通常配合指令列表。
(3)send_config_from_file():如 send_config_set() 指令列表过大,可单独放入文本中配合 send_config_from_file() 调用。
(4)send_command_timing():主动延迟等待,主要用于应对设备交互管理平台回显量大出现有意延迟或异常卡顿的现象。(初学者少用,本文暂不演示。)(公众号:释然IT杂谈)
实验目的:

通过 PC(192.168.242.2,Python所在),连接 Layer3Switch-1(192.168.242.12) ,完成如下三个小目标。

(1)调用 send_command() 函数,执行 display interface description 检查接口描述。
(2)调用 send_config_set() 函数,通过列表形式,配置 interface GigabitEthernet 0/0/0 的描述为“descby_send_config_set()”。
(3)调用 send_config_from_file()函数,通过文件形式,配置 interface GigabitEthernet 0/0/1 的描述为“descby_send_config_from_file()”。(公众号:释然IT杂谈)
实验准备及检查:
(1)完成实验拓扑组网,完成管理 IP 配置,账号配置。
(2)实验拓扑网络打通,在 PC 端可手工 ping 通设备,登录设备,执行命令。
(3)在 Layer3Switch-1 上用如下指令检查配置,如实验前有配置则清空。
display interface description | include GE0/0/[12][^0-9]
# 正则表达式在网络运维中是一把利器,稍作解释:
#   因为 LSW2 的 0 板是有 24 端口,我们只关注 GE0/0/1 和 GE0/0/2。
#   为了回显简洁,我们使用了 include 进行过滤。(公众号:释然IT杂谈)
#   正则表达式 GE0/0/[12][^0-9] 中 [12] 表示字符 1 或者 2 ,[^0-9] 表示非0-9。
#   于是 GE0/0/[12][^0-9] 只会匹配 GE0/0/1 和 GE0/0/2 ,不会匹配 GE0/0/3 等其它。

上述三点前序文章介绍过,这里从略。

(4)在实验文件夹中,准备实验目的(3)的预设指令,编辑后保存为 netmiko-config-lab2.txt。

Python代码:

netmiko 模块的脚本相对于 paramiko 真是精简太多了,有惊艳之感!

from netmiko import ConnectHandler

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

commands = ['interface GigabitEthernet 0/0/1', 'description descby_send_config_set()']

with ConnectHandler(**sw1) as connect:
        print ("已经成功登陆交换机" + sw1['ip'])
# 公众号:释然IT杂谈
        print('===实验目的(1),交互形式推送一条指令。')
        output = connect.send_command('display interface description | include GE0/0/[12][^0-9]')
        print(output)

        print('===实验目的(2),列表形式推送多条指令。')
        output = connect.send_config_set(commands)
        print(output)

        print('===实验目的(3),文件形式推送多条指令。')
        output = connect.send_config_from_file('netmiko-config-lab2.txt')
        print(output)

        print('===最后再检查配置')
        output = connect.send_command('display interface description | include GE0/0/[12][^0-9]')
        print(output)

        # 华为设备的保存配置save后需要输入y进行确认,后面实验再演示。
执行脚本:
一切准备就绪,我们把代码跑起来,过程如下:
实验结果检查:
display interface description | include GE0/0/[12][^0-9]
实验扩展:

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

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

实验小结:
好了,实验完成。希望通过这个实验,我们能清晰掌握 netmiko 几条指令配置函数的使用。大家生产有什么实际需求?可以试着拆分成几个小目标,逐一实现,最终再组合起来,满足日常生产,这样我们才能学以致用!




(来源:释然IT杂谈)
(原文链接:https://mp.weixin.qq.com/s/S-9XPHqDKfr2wHcB6oK_UA

发表评论

点击排行

钓鱼邮件-如何快速成为钓鱼达人

一、前言在大型企业边界安全做的越来越好的情况下,不管是 APT 攻击还是红蓝对抗演练,钓鱼邮件攻击使用的...

【渗透实战系列】| 1 -一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

本次渗透实战主要知识点:1.app抓包,寻找后台地址2.上传绕过,上传shell3.回shell地址的分析4.中国蚁剑工...

HTTPS - 如何抓包并破解 HTTPS 加密数据?

HTTPS 在握手过程中,密钥规格变更协议发送之后所有的数据都已经加密了,有些细节也就看不到了,如果常规的...

无线电安全攻防之GPS定位劫持

一、需要硬件设备HackRFHackRF 连接数据线外部时钟模块(TCXO 时钟模块)天线(淘宝套餐中的 700MHz-2700MH...

记一次Fastadmin后台getshell的渗透记录

1.信息搜集先来看看目标站点的各种信息后端PHP,前端使用layui,路由URL规则看起来像ThinkPHP,那自然想到...

华为防火墙实战配置教程,太全了

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系...

ADCS系列之ESC1、ESC8复现

对原理感兴趣的可以去https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf看原文,这里只...

【干货分享】利用MSF上线断网主机的思路分享

潇湘信安 Author 3had0w潇湘信安一个不会编程、挖SRC、代码审计的安全爱好者,主要分享一些安全经验、...

扫描二维码下载APP