之前的文章介绍了如何用TextFSM解析文本,但这需要编写复杂的模板和正则表达式。接下来的任务是为网络环境开发更多特定配置的解析模板,这非常耗时且需要丰富的经验。对于初学者来说,面对多变的网络配置,有一种更简便的方法:使用
ntc-templates
这样的工具,可以简化工作并提高效率。
什么是ntc-templates
这是一款由Networktocode
团队开源的产品,它汇集了众多网络运维工程师的智慧,利用TextFSM
规则来帮助大家更轻松地解决网络配置解析方面的挑战。
-
众多厂商网络设备的配置解析的TextFSM模板库 -
进一步封装 Textfsm CliTable
部分,可以非常简洁的使用进而解析出网络配置成结构化数据。
ntc-templates的武器库
它内置了近400个Textfsm
解析模板,涵盖了多种主流网络设备,特别是思科的产品占据了很大一部分。同时,许多热心的国内用户也为H3C
和华为的相关命令贡献了宝贵的解析模板。
这些模板完全可以使用,只需要对一些细节进行微调就好了。
基本使用
安装
ntc-templates
的安装也比较简单。
pip install ntc_templates
解析文本
-
先引入 Ntc-templates
,执行如下命令
from ntc_templates.parse import parse_output
-
为了进行测试,我想简单地获取一段华为设备版本信息的非结构化数据,数据如下:
Version_output ="""VRP (R) software, Version 5.130 (S5710 V200R003C00SPC300)
Copyright (C) 2000-2013 HUAWEI TECH CO., LTD
Quidway S5710-52C-EI Routing Switch uptime is 541 weeks, 6 days, 23 hours, 39 minutes
LS52T52C 0(Master) : uptime is 541 weeks, 6 days, 23 hours, 38 minutes
512M bytes DDR Memory
200M bytes FLASH
Pcb Version : VER A
Basic BOOTROM Version : 161 Compiled at Jul 25 2013, 12:03:10
CPLD Version : 273
Software Version : VRP (R) Software, Version 5.130 (V200R003C00SPC300)
PWR1 information
Pcb Version : PWR VER B
PWR2 information
Pcb Version : PWR VER B"""
-
然后通过Ntc-templates解析成结构化数据。执行如下命令:
version_parsed = parse_output(platform="huawei_vrp", command="display version", data=Version_output)
-
打印解析后的数据,如所示:
[{'vrp_version': '5.130', 'product_version': 'S5710 V200R003C00SPC300', 'model': 'S5710-52C-EI Routing Switch', 'uptime': '541 weeks, 6 days, 23 hours, 39 minutes', 'patch_version': ''}]
网工界的TFBOYS
Netmiko
与TextFSM
及NTC-Templates
的结合,在NetDevOps
的世界里就像是TFBOYS
一样引人注目。它们让工作变得更加轻松有趣。要使用这一强大组合也非常简单,只需在调用send_command
时设置参数use_textfsm=True
即可享受这份便捷啦!
from netmiko import ConnectHandler
if __name__ == '__main__':
dev_info = {
'device_type': 'huawei',
'ip': '192.168.56.11',
'port': 22,
'username': 'user01',
'password': 'user01'
}
net_connect = ConnectHandler(**dev_info)
output = net_connect.send_command('display memory-usage',use_textfsm=True)
print(output)
原文始发于微信公众号(攻城狮成长日记):TextFSM模板太复杂?ntc-templates让一切变得简单!
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论