求适用于Cisco ISE版本信息解析的TextFSM模板
解决Cisco ISE版本与补丁的TextFSM解析方案
先给出典型的show application version ise命令输出示例,方便模板适配:
Cisco Identity Services Engine --------------------------------------------- Version : 3.2.0.542 Build Date : Tue May 18 00:22:05 PDT 2021 Install Date : Wed May 19 10:15:32 PDT 2021 Cisco Identity Services Engine Patch 2 --------------------------------------------- Version : 2 Build Date : Fri Jul 23 00:15:42 PDT 2021 Install Date : Fri Jul 23 10:02:18 PDT 2021 Cisco Identity Services Engine Patch 3 --------------------------------------------- Version : 3 Build Date : Mon Aug 16 00:08:35 PDT 2021 Install Date : Mon Aug 16 09:45:22 PDT 2021
方案一:按输出块区分(推荐,可靠性更高)
利用输出中主版本和补丁的区块标题差异(主版本对应Cisco Identity Services Engine,补丁对应Cisco Identity Services Engine Patch N)来区分,补丁为可选内容。
TextFSM模板
Value MAIN_VERSION (\d+\.\d+\.\d+\.\d+) Value PATCH_VERSION (\d+) Start ^Cisco Identity Services Engine$ -> MainBlock ^Cisco Identity Services Engine Patch \d+$ -> PatchBlock MainBlock ^Version\s+: ${MAIN_VERSION} -> Continue.Record ^$ -> Start PatchBlock ^Version\s+: ${PATCH_VERSION} -> Continue.Record ^$ -> Start
解析逻辑
- 状态跳转:在
Start状态识别区块标题,分别进入主版本块或补丁块的处理状态 - 提取值:在对应区块内匹配
Version行,提取对应格式的版本号 - 状态重置:遇到空行时回到
Start状态,处理下一个区块
输出与后续处理
模板直接输出格式为:
[['3.2.0.542', ''], ['3.2.0.542', '2'], ['3.2.0.542', '3']]
如果需要合并成你期望的[[3.2.0.542, [2,3]]]格式,可通过简单的Python代码处理:
import textfsm with open('ise_version.template', 'r') as f, open('ise_output.txt', 'r') as output: template = textfsm.TextFSM(f) raw_result = template.Parse(output.read()) main_ver = raw_result[0][0] patches = [item[1] for item in raw_result if item[1]] final_result = [[main_ver, patches]] print(final_result)
方案二:通过版本格式正则区分
利用主版本(四段数字x.x.x.x)和补丁版本(纯数字)的格式差异,直接匹配区分。
TextFSM模板
Value MAIN_VERSION (\d+\.\d+\.\d+\.\d+) Value PATCH_VERSION (\d+) Start ^Version\s+: ${MAIN_VERSION} ^Version\s+: ${PATCH_VERSION}
解析逻辑
通过正则表达式的格式差异直接匹配:
MAIN_VERSION匹配四段式版本号PATCH_VERSION匹配纯数字补丁号
优缺点
- 优点:模板更简洁,无需处理区块跳转
- 缺点:依赖版本格式的固定性,如果后续补丁版本格式变为多段式(如
1.1),则需要调整正则
测试方法
使用TextFSM命令行工具验证模板:
textfsm -t ise_version.template ise_output.txt
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

