银狐NetDevOps-网络运维Python初篇(二)Netmiko抓取多台网络设备配置

1、训练场景:通过Netmiko抓取多台思科or华为设备配置

上一个章节我们举了一个简单的案例,利用netmiko抓取单台思科设备的配置,接下来我们来慢慢晋级。分享下如何靠netmiko抓取多台设备的配置,这里也分几种情况。

1、同时抓取多台同厂商设备的配置,这样device_type就是一致的,比较容易操作;

2、同时抓取多台不同厂商设备的配置,这里device_type会不同,难度会提升。(下节课)

2、实验环境:

操作系统:windows 10 PC机

python版本:python 3.8

网络设备:EVE-NG模拟器(3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(15)T14)

编辑器:vscode(pycharm、sublime均可,推荐vscode)

实验拓扑:(eve-ng模拟器,笔记本和2台路由器fa0/0桥接成一个物理网段)

IP地址:R1 = 192.168.147.148,

R2 = 192.168.147.149。

注意:EVE-NG模拟器内容可百度搜索,有很多介绍的文章。

3、思路分析

场景:同时抓取多台同厂商设备的配置

首先我们应该有一个IP地址列表,分别代表不同的设备,这样才能让PC通过SSH连接到不同的网络设备。我们可以定义一个list,然后把IP地址加入到list中,通过for循环逐一的把第一台设备IP地址,第二台设备IP地址取出来,然后通过Netmiko按顺序进行SSH连接,在通过上个章节内容进行命令操作。

4、整体代码分析(可直接复制粘贴运行)

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from netmiko import ConnectHandler

#新增加一个list,包含设备IP
device_list = ["192.168.147.148","192.168.147.149"]               

#进行for循环,把每台设备IP地址按顺序提取出来
for device in device_list:                                        
    session = ConnectHandler(device_type = "cisco_ios",           
                            ip = device,                          #IP地址引用device提取出来的地址
                            username = "root",
                            password = "root@123",
                            )

#打印提示已连接,因为实验是2台设备,所以IP地址不能写死,需要写成变量的形式,后面跟上所登录设备device的IP地址
    print("connected to {}".format(device))                       

#show run回显内容太长,不方便下面截图,所以改成看接口IP地址
    config= session.send_command("show ip int brief | include FastEthernet0/0")

    print(config)

    session.disconnect() 

以下为编辑器回显内容:以后代码少的情况下就把代码和执行结果一起截图,因为有高亮内容,感觉更容易让大家查看。

此次就不做单独的代码分析了,因为都是基于上节课的代码进行小范围改造,整体代码中加入的注释应该比较详细了。如果大家觉得这样的分享形式有什么不好的,也可以多提提意见。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章