在現(xiàn)代化的網(wǎng)絡(luò)架構(gòu)中,網(wǎng)絡(luò)設(shè)備的健康狀況直接關(guān)系到整個系統(tǒng)的穩(wěn)定性與性能。為了確保網(wǎng)絡(luò)設(shè)備能夠持續(xù)高效地運行,傳統(tǒng)的人工巡檢方法常常面臨工作量大、效率低、易出錯等問題。因此,網(wǎng)絡(luò)設(shè)備自動化巡檢成為了提升網(wǎng)絡(luò)運維效率的重要手段 。
自動化巡檢的必要性
- 高效性:人工巡檢耗時費力,而自動化巡檢能快速完成大量任務(wù),顯著提升效率。
- 減少人為失誤:人工巡檢易出錯,自動化系統(tǒng)按規(guī)則執(zhí)行,減少失誤。
- 數(shù)據(jù)可追溯:自動化巡檢結(jié)果會被記錄保存,為故障排查和性能優(yōu)化提供數(shù)據(jù)支持。
- 及時發(fā)現(xiàn)潛在的問題:自動化系統(tǒng)可以實時或定期檢查設(shè)備狀態(tài),提前發(fā)現(xiàn)異常,減少故障停機時間。
自動化巡檢的核心技術(shù)
Netmiko
Netmiko
是一個專為網(wǎng)絡(luò)設(shè)備設(shè)計的Python
庫,旨在促進諸如配置調(diào)整、命令執(zhí)行等操作。該庫廣泛兼容多種廠商的網(wǎng)絡(luò)設(shè)備及協(xié)議,極大地便利了工程師們利用Python
腳本進行自動化巡檢與配置管理工作。
TextFSM
TextFSM 是一個 Python 庫,專門用于從結(jié)構(gòu)化文本(特別是網(wǎng)絡(luò)設(shè)備的輸出)中提取信息。它利用模板來匹配和解析數(shù)據(jù),并將結(jié)果轉(zhuǎn)換成易于處理的格式(如字典或列表)。這使得從諸如路由表、接口狀態(tài)等CLI輸出中自動抽取關(guān)鍵信息變得簡單,便于網(wǎng)絡(luò)運維人員及開發(fā)者進行進一步分析。
基本用法
安裝Netmiko
首先需要安裝 Netmiko
??梢允褂?pip 安裝:
pip install netmiko
基本連接
使用Netmiko
連接到網(wǎng)絡(luò)設(shè)備時,需要指定設(shè)備的 IP 地址、設(shè)備類型、用戶名和密碼等信息。Netmiko
支持多種設(shè)備類型(如 Cisco
, Huawei
, Juniper
等),這些設(shè)備類型對應(yīng)不同的命令和交互方式。
from netmiko import ConnectHandler
# 定義設(shè)備連接信息
device = {
'device_type': 'huawei', # 設(shè)備類型,例如 'cisco_ios'、'huawei' 等
'host': '192.168.56.10', # 設(shè)備的 IP 地址
'username': 'user01', # 登錄用戶名
'password': 'user01', # 登錄密碼
'secret': 'secret', # (可選) 如果需要啟用特權(quán)模式,可以提供 secret
}
# 建立連接
net_connect = ConnectHandler(**device)
# 進入特權(quán)模式(如果需要)
# net_connect.enable()
# 執(zhí)行命令并獲取輸出
output = net_connect.send_command('display version')
# 打印命令輸出
print(output)
# 斷開連接
net_connect.disconnect()
命令輸出格式化
Netmiko
支持將命令輸出以不同的方式進行格式化。例如,可以使用 send_command
時加上 use_textfsm=True
參數(shù)來將輸出解析為結(jié)構(gòu)化數(shù)據(jù)(需要預(yù)先配置 TextFSM
模板)。
# 執(zhí)行命令并獲取輸出
output = net_connect.send_command('display version',use_textfsm=True,\
textfsm_template='./templates/huawei/huawei_version.textfsm')
執(zhí)行上述測試腳本后,成功運行后返回如下結(jié)果:
$ python test.py
[{'version': '5.110', 'device_model': 'S5700-28C-HI', 'uptime': '0 week, 0 day, 2 hours, 46 minutes'}]
封裝腳本工具
這個腳本使用了Netmiko
和TextFSM
來幫助我們進行設(shè)備巡檢。下面展示了該腳本目錄結(jié)構(gòu)的一個示意圖:
templates
目錄存放TextFSM
解析模板。
devices.xlsx
文件存放巡檢設(shè)備和巡檢命令。格式如下圖示所示:
使用這個腳本非常簡單。首先,請根據(jù)您的具體情況調(diào)整devices.xlsx
文件中的內(nèi)容,然后就可以運行main.py
了。
這個腳本目前實現(xiàn)了基礎(chǔ)功能,為大家提供了一個很好的起點。我們非常鼓勵有想法的同學(xué)根據(jù)自己的業(yè)務(wù)需求進一步開發(fā)和擴展更多實用的功能哦!