当前位置: 首页 > article >正文

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

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

什么是ntc-templates

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

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

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

ntc-templates的武器库

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

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

基本使用

安装

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)

推荐阅读


  • 告别手动巡检,自动化让网络设备管理更高效

  • 数据备份不再难,图解三大组网方式,保护你的数字生活

  • 家庭数据存储新选择:NAS让你的手机不再烦恼存储空间!

  • 开发者之选:Bruno如何在竞争中脱颖而出

  • 数据安全保障:完全备份、增量备份与差异备份如何选?

  • 记录一次Linux服务器被人使用SSH字典爆破

  • 别再找了!这五款堡垒机满足你的所有需求



http://www.kler.cn/a/415283.html

相关文章:

  • auto与decltype
  • vue element-ui的el-image 和 el-table冲突层级冲突问题问题preview-teleported
  • TDengine在debian安装
  • 麒麟性能评估优化
  • Leetcode:349. 两个数组的交集
  • (四)Spring Boot学习——整合修改使用druid连接池
  • Android studio与JS交互
  • Android Studio 右侧Gradle窗口只有test的task问题解决
  • pytest+allure生成报告显示loading和404
  • 浅谈C#库之DevExpress
  • Rust 组织管理
  • 知识点回顾
  • python的文件操作练习
  • 基于Java Springboot社区助老志愿者服务平台
  • 如何在 GitHub 上下载并切换到仓库的历史版本
  • Java学习,反射
  • 常用指标采集 exporter
  • 前端网络安全分析
  • 知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 开源项目:纯Python构建的中后台管理系统
  • 解决 YOLOv5 加载模型时 ‘AttributeError Can‘t get attribute ‘SPPF‘‘ 错误的方法
  • 【sqlcipher】pc端sqflite使用过程中遇到的问题
  • 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。-多语言
  • 【青牛科技】电动工具电流反馈型相位控制电路D2010
  • 传输控制协议(TCP)