如何为ntc-templates贡献自定义TextFSM模板?开发者指南

【免费下载链接】ntc-templates TextFSM templates for parsing show commands of network devices 【免费下载链接】ntc-templates 项目地址: https://gitcode.com/gh_mirrors/nt/ntc-templates

ntc-templates是一个强大的开源项目,提供网络设备show命令的TextFSM模板解析功能。本指南将详细介绍如何为该项目贡献自定义TextFSM模板,帮助开发者快速上手贡献流程。

📋 贡献前准备

在开始贡献之前,请确保完成以下准备工作:

  1. 克隆项目仓库

    git clone https://gitcode.com/gh_mirrors/nt/ntc-templates
    
  2. 了解项目结构

    • 模板文件存放于ntc_templates/templates/目录
    • 测试文件位于tests/目录下,按设备类型和命令分类
    • 索引文件ntc_templates/templates/index用于绑定模板与命令

ntc-templates项目结构 ntc-templates项目logo,象征网络设备命令解析功能

✍️ 创建TextFSM模板

命名规范

模板文件需遵循以下命名格式:

{{ vendor_os }}_{{ command_with_underscores }}.textfsm

例如:cisco_ios_show_cdp_neighbors.textfsm

提示:供应商名称必须在os_choices测试中有效,主要基于Netmiko支持的供应商列表。

模板格式要求

  1. 捕获组命名:使用大写字母,如Value INTERFACE (\S+)
  2. 状态定义:以Start状态开始,匹配标题后转换到其他状态
  3. 错误处理:每个状态应以^. -> Error结束,确保所有行都被处理
  4. 空格处理:使用\s*(零或多个空格)和\s+(一个或多个空格)代替字面空格

示例模板:

Value TIME (\d+:\d+:\d+)
Value TIMEZONE (\S+)
Value DAYWEEK (\w+)
Value MONTH (\d+)
Value DAY (\d+)
Value YEAR (\d+)

Start
  ^${TIME}\s+${TIMEZONE}\s+${DAYWEEK}\s+${DAY}/${MONTH}/${YEAR} -> Record
  ^. -> Error

最佳实践:尽可能使用标准捕获组名称以实现数据标准化。

📑 更新索引文件

索引文件ntc_templates/templates/index用于将模板与命令绑定,需遵循以下排序规则:

  • 按操作系统字母顺序
  • 按模板名称长度排序(从长到短)
  • 长度相同时按命令名称字母顺序
  • 不同操作系统间保留空行

示例索引项:

cisco_ios_show_capability_feature_routing.textfsm, .*, cisco_ios, sh[[ow]] cap[[ability]] f[[eature]] r[[outing]]
cisco_ios_show_interface_transceiver.textfsm, .*, cisco_ios, sh[[ow]] int[[erface]] trans[[ceiver]]

🧪 创建测试文件

每个模板必须包含对应的测试文件,存放在tests/{{ vendor_os }}/{{ command_name }}/目录下,包含:

  1. 原始输出文件(.raw):仅包含命令输出内容,不含命令本身

    *18:57:38.347 UTC Mon Oct 19 2015
    
  2. 解析结果文件(.yml):包含预期解析结果,键名小写

    ---
    parsed_sample:
      - time: "18:57:38.347"
        timezone: "UTC"
        dayweek: "Mon"
        month: "Oct"
        day: "19"
        year: "2015"
    

🛠️ 使用开发辅助脚本

项目提供CLI工具辅助创建和格式化测试文件:

  1. 生成YAML测试文件

    python cli.py gen-yaml-file -f tests/cisco_ios/show_clock/cisco_ios_show_clock.raw
    
  2. 格式化YAML文件

    python cli.py clean-yaml-folder -f tests/cisco_ios/show_mac-address-table
    

这些命令也可通过invoke执行,如invoke clean-yaml-file,以更好地支持Docker环境。

🔍 测试模板

本地测试

poetry shell
poetry install
invoke tests --local

Docker测试

invoke tests

📝 提交贡献

提交PR前请确保:

  • 每个PR只更新或创建一个模板
  • 遵循代码风格指南
  • 所有测试通过
  • 文档更新(如需要)

📚 参考资源

通过遵循以上步骤,您可以顺利为ntc-templates项目贡献高质量的TextFSM模板,帮助完善网络设备命令解析功能。

【免费下载链接】ntc-templates TextFSM templates for parsing show commands of network devices 【免费下载链接】ntc-templates 项目地址: https://gitcode.com/gh_mirrors/nt/ntc-templates

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐