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()
以下爲編輯器回顯內容:以後代碼少的情況下就把代碼和執行結果一起截圖,因爲有高亮內容,感覺更容易讓大家查看。
此次就不做單獨的代碼分析了,因爲都是基於上節課的代碼進行小範圍改造,整體代碼中加入的註釋應該比較詳細了。如果大家覺得這樣的分享形式有什麼不好的,也可以多提提意見。