TextFSM模板太复杂?ntc-templates让一切变得简单!

admin 2024年11月28日20:03:05评论11 views字数 2078阅读6分55秒阅读模式

之前的文章介绍了如何用TextFSM解析文本,但这需要编写复杂的模板和正则表达式。接下来的任务是为网络环境开发更多特定配置的解析模板,这非常耗时且需要丰富的经验。对于初学者来说,面对多变的网络配置,有一种更简便的方法:使用ntc-templates这样的工具,可以简化工作并提高效率。

什么是ntc-templates

这是一款由Networktocode团队开源的产品,它汇集了众多网络运维工程师的智慧,利用TextFSM规则来帮助大家更轻松地解决网络配置解析方面的挑战。

  • 众多厂商网络设备的配置解析的TextFSM模板库

  • 进一步封装Textfsm CliTable部分,可以非常简洁的使用进而解析出网络配置成结构化数据。

TextFSM模板太复杂?ntc-templates让一切变得简单!

ntc-templates的武器库

它内置了近400个Textfsm解析模板,涵盖了多种主流网络设备,特别是思科的产品占据了很大一部分。同时,许多热心的国内用户也为H3C和华为的相关命令贡献了宝贵的解析模板。

TextFSM模板太复杂?ntc-templates让一切变得简单!

这些模板完全可以使用,只需要对一些细节进行微调就好了。

基本使用

安装

ntc-templates的安装也比较简单。

pip install ntc_templates

解析文本

  1. 先引入Ntc-templates,执行如下命令
from ntc_templates.parse import parse_output
  1. 为了进行测试,我想简单地获取一段华为设备版本信息的非结构化数据,数据如下:
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"""
  1. 然后通过Ntc-templates解析成结构化数据。执行如下命令:
version_parsed = parse_output(platform="huawei_vrp", command="display version", data=Version_output)
  1. 打印解析后的数据,如所示:
[{'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

NetmikoTextFSMNTC-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让一切变得简单!

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月28日20:03:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   TextFSM模板太复杂?ntc-templates让一切变得简单!https://cn-sec.com/archives/3444975.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息