从网络设备输出返回结构化数据的包。

ntc-templates的Python项目详细描述


Build Status

用于网络设备的textfsm模板库

ntc模板包含一组基于textfsm解析引擎的多供应商模板。

这些模板接受来自网络基础设施设备(如cisco ios、juniper junos)的cli的原始字符串输入。 或者hpe-comware设备,通过textfsm模板运行它们,并以python字典的形式返回结构化文本。

贡献

拉请求是受欢迎的,并通过travisci自动构建和测试。

要提供新模板,每个新的拉取请求都必须包含以下内容

  • textfsm模板
  • 要分析的文本的原始版本
  • 包含预期解析字典的yaml文件
  • 索引的修改版本文件

关于贡献的一些注释可以帮助您确保travisci构建成功返回:

textfsm模板

textfsm模板应该放在./templates文件夹中,并且应该遵循ntc模板样式。 textfsm模板名称应采用以下格式

{{ vendor_name }}_{{show_command}}

注意:供应商名称必须在Netmiko库中有效。

value变量应为大写。

正确格式的示例如下所示。

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

输入文本的原始版本

原始文本文件应仅包含要分析的cli命令的输出。它应该而不是包含cli命令本身 原始文本文件应放在./tests目录中的一个文件夹中,该文件夹的名称应与模板文件的名称减去.template扩展名后的名称相同

下面是正确格式的示例

19:35:31 UTC Sat 01/08/2011

包含预期解析字典的yaml文件

解析的词典必须采用词典格式。字典中的所有键都应使用小写形式

解析的文本文件应放在./tests目录中的文件夹中,该文件夹的名称与模板文件的名称相同,但不包括 .template扩展。原始文本文件和解析的文本文件应该在同一文件夹中。

下面是正确格式的示例

---parsed_sample:-{day:'01', dayweek:Sat, month:08, time:'19:35:31', timezone:UTC, year:'2011'}

每个文件夹支持多个原始文件和已分析的文件,并鼓励这样做,因为根据版本、长度等存在差异…额外的测试和更多的真实数据有助于识别。

索引文件

索引文件将模板绑定到正在运行的命令。订购时特别小心,因为可能会出现问题。例如,show ip routeshow ip router vrf <vrf-name>拾取。我们使用了一种组合排序,定义如下:

  • 操作系统按字母顺序排列
  • 其他长度的命令
  • 当长度相同时,使用字母顺序
  • 在操作系统之间留出空间

示例:

Template, Hostname, Platform, Command

arista_eos_show_mlag.template, .*, arista_eos, sh[[ow]] ml[[ag]]
arista_eos_show_vlan.template, .*, arista_eos, sh[[ow]] vl[[an]]

cisco_asa_dir.template,  .*, cisco_asa, dir

cisco_ios_show_capability_feature_routing.template,  .*, cisco_ios, sh[[ow]] cap[[ability]] f[[eature]] r[[outing]]
cisco_ios_show_interface_transceiver.template, .*, cisco_ios, sh[[ow]] int[[erface]] trans[[ceiver]]
cisco_ios_show_cdp_neighbors_detail.template, .*, cisco_ios, sh[[ow]] c[[dp]] neig[[hbors]] det[[ail]]

问题

如有任何问题或意见,请随时按networktocode slack channel键。

注册here

发布历史记录

1.0.0条 +++++

  • 首次初次发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java创建猜谜游戏程序   JavaWebSocketContainer。connectToServer似乎挂起了   如何在java中中断函数   java c#socket client multiple BeginSend()未到达服务器   不可见的组件然后在Java中的窗格之间切换   java在应用程序类中使用静态接口安全吗?   java等待函数完成,直到回调到来   使用DataOutputStream时的java新行,Android   java服务对象的定义是什么?   基于视图的javahibernate复合密钥   java将varchar连接到char在JPA(oracle)中不起作用   如何在java中通过point类读取多个点?