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

admin 2025年2月24日14:04:14评论26 views字数 3101阅读10分20秒阅读模式
 网工Python之路之netmiko模块实验(一)初来乍到
前言:

哈喽,前面我们已经初识了 netmiko 模块。本文我们将通过实验,重点学习 netmiko 向设备进行推送指令,抓去回显的操作。

感谢《网络工程师python之路》作者@弈心大神以及课代表网工手艺专栏@朱嘉盛大佬两位的传道。

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

 网工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 )命令的执行和回显内容的读取,简化了设备配置命令,支持了多厂商的设备和平台。公众号:释然IT杂谈)

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

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模块实验(二)推送配置

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(**sw1as 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进行确认,后面实验再演示。网工Python之路之netmiko模块实验(二)推送配置
执行脚本:
一切准备就绪,我们把代码跑起来,过程如下:
网工Python之路之netmiko模块实验(二)推送配置
实验结果检查:
display interface description | include GE0/0/[12][^0-9]网工Python之路之netmiko模块实验(二)推送配置
实验扩展:

小伙伴想执行其他友商设备怎么办,这里以思科为例略微调整成思科类型和命令就行。公众号:释然IT杂谈)

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

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

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

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

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

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

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

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

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

原文始发于微信公众号(释然IT杂谈):网工Python之路之netmiko模块实验(二)推送配置

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月24日14:04:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   网工Python之路之netmiko模块实验(二)推送配置https://cn-sec.com/archives/860925.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息