告別手動巡檢,自動化讓網路設備管理更高效
在現代化的網路架構中,網路設備的健康情況直接關係到整個系統的穩定性與性能。 為了確保網路設備能夠持續高效地運行,傳統的人工巡檢方法常常面臨工作量大、效率低、易出錯等問題。 因此,網路設備自動化巡檢成為了提升網路運維效率的重要手段。
自動化巡檢的必要性
- 高效性:人工巡檢耗時費力,而自動化巡檢能快速完成大量任務,顯著提升效率。
- 減少人為失誤:人工巡檢易出錯,自動化系統按規則執行,減少失誤。
- 數據可追溯:自動化巡檢結果會被記錄保存,為故障排查和性能優化提供數據支援。
- 及時發現潛在的問題:自動化系統可以即時或定期檢查設備狀態,提前發現異常,減少故障停機時間。
自動化巡檢的核心技術
(1) Netmiko
Netmiko是一個專為網路設備設計的Python庫,旨在促進諸如配置調整、命令執行等操作。 該庫廣泛相容多種廠商的網路設備及協定,極大地便利了工程師們利用Python腳本進行自動化巡檢與配置管理工作。
(2) TextFSM
TextFSM 是一個 Python 庫,專門用於從結構化文本(特別是網路設備的輸出)中提取資訊。 它利用範本來匹配和解析數據,並將結果轉換成易於處理的格式(如字典或清單)。 這使得從諸如路由表、介面狀態等CLI輸出中自動抽取關鍵資訊變得簡單,便於網路運維人員及開發者進行進一步分析。
基本用法
(1) 安裝Netmiko
首先需要安裝 Netmiko。 可以使用 pip 安裝:
pip install netmiko
- 1.
(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()
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
(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')
- 1.
- 2.
- 3.
執行上述測試文本后,成功運行后返回如下結果:
$ python test.py
[{'version': '5.110', 'device_model': 'S5700-28C-HI', 'uptime': '0 week, 0 day, 2 hours, 46 minutes'}]
- 1.
- 2.
封裝腳本工具
這個腳本使用了Netmiko和TextFSM來幫助我們進行設備巡檢。 下面展示了該文稿目錄結構的一個示意圖:
- templates目錄存放TextFSM解析範本。
- config.toml是專案的配置檔
- devices.xlsx檔存放巡檢設備和巡檢命令。 格式如下圖示所示:
巡檢設備台賬
巡檢命令
使用這個腳本非常簡單。 首先,請根據您的具體情況調整devices.xlsx檔中的內容,然後就可以運行 main.py 了。
這個腳本目前實現了基礎功能,為大家提供了一個很好的起點。 我們非常鼓勵有想法的同學根據自己的業務需求進一步開發和擴展更多實用的功能哦!