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