从网络设备输出返回结构化数据的包。
ntc-templates的Python项目详细描述
用于网络设备的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 route
为show 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条 +++++
- 首次初次发布