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()
以下为编辑器回显内容:以后代码少的情况下就把代码和执行结果一起截图,因为有高亮内容,感觉更容易让大家查看。
此次就不做单独的代码分析了,因为都是基于上节课的代码进行小范围改造,整体代码中加入的注释应该比较详细了。如果大家觉得这样的分享形式有什么不好的,也可以多提提意见。