如何将CLI命令输出加载到Cisco Genie/pyATS解析器中
Genie离线解析CLI输出方案
完全支持直接传入已收集的CLI输出字符串进行解析,无需建立设备SSH连接,操作步骤如下:
操作步骤
- 确认待解析设备的OS类型(如IOS、IOSXE、NX-OS、IOSXR等)和对应命令,有两种调用解析器的方式:
方式1:直接导入对应解析器
以IOSXE设备的show version命令为例,代码示例如下:
# 导入对应OS、对应命令的解析器 from genie.libs.parser.iosxe.show_version import ShowVersion # 读取客户提供的CLI输出字符串,此处cli_output为你提取到的原始命令输出 with open("客户提供的show_version.log", "r", encoding="utf-8") as f: cli_output = f.read() # 实例化解析器,device参数传None即可,无需关联真实设备 parser = ShowVersion(device=None) # 传入原始输出进行解析,得到结构化结果 parsed_result = parser.parse(output=cli_output)
方式2:动态获取解析器(适合批量处理场景)
如果需要批量处理多OS、多命令的场景,可以用通用的get_parser方法动态加载解析器:
from genie.libs.parser.utils import get_parser # 按需指定命令和对应设备OS,自动获取对应解析器 parser = get_parser("show version", "iosxe") # 传入原始CLI输出即可解析 parsed_result = parser.parse(output=cli_output)
注意事项
- 导入解析器时需和设备OS、要解析的命令完全匹配,不同OS的同命令解析器相互独立,例如IOS的
show version解析器路径为genie.libs.parser.ios.show_version.ShowVersion,NX-OS对应路径为genie.libs.parser.nxos.show_version.ShowVersion,不可混用。 - 传入的CLI输出需要保留原始格式,不要随意删减空行、命令提示符等内容,否则可能触发解析异常。
- 解析后的返回结果和通过SSH连接调用
device.parse()得到的结构化数据格式完全一致,无需修改后续处理逻辑。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

