iSlot官方网站

无线新履历 ,不变如磐石 丨 高校关键场景高密无线优良实际分享会
date
预约直播
从此 ,无线可“磐石" 丨 iSlot官方网站磐石无线解决规划场景颁布会
date
预约直播
iSlot官方网站 - 引领潮水
产品
< 返回主菜单
产品中心
产品
解决规划
< 返回主菜单
解决规划中心
行业
合作同伴
返回主菜单
选择区域/说话
iSlot官方网站 - 引领潮水

您订阅的产品有更新 ,请实时查阅

查看详情
iSlot官方网站 - 引领潮水 iSlot官方网站 - 引领潮水

基于Python TextFSM?榈耐缟璞缸远宋街

本文将给各人介绍一种主流的基于CLI号令行登录的自动化运维实际案例 ,但愿可能给各人带来援手。

  • iSlot官方网站 - 引领潮水

    颁布功夫:2021-03-04

  • iSlot官方网站 - 引领潮水

    点击量:

  • iSlot官方网站 - 引领潮水

    点赞:

分享至

iSlot官方网站 - 引领潮水
iSlot官方网站 - 引领潮水
iSlot官方网站 - 引领潮水

我想评论

iSlot官方网站 - 引领潮水

本文作者:kevinwoo

iSlot官方网站网络技术服务部互联网服务中心

 

随着云推算和SDN技术的发展 ,数据中心规模越来越大 ,而网络架构逐步向“去堆叠”、“去框”式发展 ,这就意味着必要守护的互换机数量在成倍的增长。随着网络守护规模越来越大 ,运维人员压力也成倍增长 ,依附传统的人为守护已不太现实 ,工具化、自动化运维势在必行。这就必要运维人员具备肯定编程能力 ,从而通过软件包办传统的人为守护。网络自动化运维理想结合软件开发领域DevOps理想而产生的NetDevOps概想已逐步被网络运维界所接受。

网络自动化运维 ,首先要实现网络设备与自动化运维平台对接 ,即通过代码实现登录网络设备并获守信息。目前常见衔接设备的步骤有仿照传统的Telnet/SSH号令登录、NETCONF、gRPC、OpenFlow和谈对接等等。


为了跟上SDN的发展趋向 ,各个传统网络设备厂商已逐步盛开API接口 ,比力有代表性的是NETCONF和YANG模型对网络设备的配置和信息输出的数据结构化界说。目前iSlot官方网站数据中心互换机产品已全面支持NETCONF和谈 ,可合用于和SDN节造器或运维平台的南向接口对接。而面对网络工程师在操作网络设备时习惯于使用CLI号令行的近况 ,又有什么样的案例实际呢?


本文将给各人介绍一种主流的基于CLI号令行登录的自动化运维实际案例 ,但愿可能给各人带来援手。


基于CLI的自动化运维带来的问题

 

CLI(Command-Line Interface)是传统网络工程师最熟悉的与网络设备“沟通”的方式 ,工程师最入门习网络课程就是要熟悉各类和谈的号令行配置、调试。工程师在日常工作中必要结合号令行输出了局进行排错 ,甚至在网络割接和调换的场景中 ,必要将调换的操作步骤细化到每一条号令。相比NETCONF等API接口 ,CLI号令行通常支持的内容越发丰硕、矫捷。所以在实现网络自动化运维的过程中 ,基于CLI的自动化是容易被传统网络工程师所接受和执行的。


随着Python说话在近些年的急剧发展 ,涌现了一批基于Python的优良开源? ,好比Ansible、Paramiko、Netmiko、Pexpect等。网络工程师此刻能够编写简短的Python剧本就能挪用这些?槭迪峙康锹忌璞钢葱芯绫 ,但是随之而来的另一个头痛的问题是传统的号令行输出了局通常是依照适合人类阅读的方式来出现的。好比“show”号令的输出了局蕴含了大量的空格、缩进、换行等 ,并且好多号令还存在高低文关联性。这些号令行输出了局通常无法被推算机很好地鉴别 ,推算机更善于鉴别XML、JSON、YAML等结构化数据类型 ,所以网工在编写Python剧本时不得不写一堆正则表白式去“抠”关键参数 ,然而使用复杂的正则表白式又进一步导致代码可守护性较差。


下面以互换机最基础的查看VLAN号令为例进行注明。如下图所示是通过“show vlan”号令的输出了局 ,对于统一个VLAN可能会存在多个端口同时放行的情况。关联的接口数量超过肯定数量时 ,输出的了局将会拆分成多行显示 ,此时 ,VLAN信息只在第一行显示 ,后续几行内容必要与第一前进行关联匹配能力得到正确的输出信息。此时若是必要读取某个VLAN关联的所有端标语列表 ,使用传统的正则表白式就必要屡次挪用正则表白式并共同循环逻辑判断能力实现 ,整个过程极度繁琐。

iSlot官方网站 - 引领潮水


Python通例的数据类型重要是列表或字典体式 ,若是有工具可能将设备的上面的输出了局直接转化为Python适配的数据类型(如下图) ,那么就能够直接使用Python进行处置。

 

iSlot官方网站 - 引领潮水


下面就要隆沉介绍一下本文标题中提到的TextFSM? ,它就是用于结构化输出文本的一个神奇工具。


TextFSM?榻樯

 

TextFSM是Google开发的一种开源Python? ,能够基于模板的状态机来解析半体式化文本 ,从而实现对网络设备CLI输出信息进行结构化数据处置 ,最终将文本内容输出为Python的字典或列表体式(或者是两者组合)。


具体内容能够接见该?榈腉itHub:https://github.com/google/textfsm。


例如 ,上文中必要将“show vlan”号令的输出了局进行解析 ,能够通过挪用下面的TextFSM模板将号令输出进行体式化:

iSlot官方网站 - 引领潮水


ruijie-templates?榻樯

 

固然有了TextFSM?榭赡茏龅浇峁够馕鑫谋拘畔 ,但是每个厂家的CLI输出内容差距较大 ,必要每条号令都有相应的模板来适配 ,导致运维人员还必要投入大量功夫去编写相应的模板。ntc-templates?榫褪俏嗍毒稣飧鐾吹愕。ntc-templates?槭怯蒼etworktocode团队开发的Python? ,该?榛赥extFSM开发 ,它内置了将近400个TextFSM模板 ,能够适配主流厂商的CLI输出了局。


具体可参考该?榈腉itHub主页:


https://github.com/networktocode/ntc-templates

 

ntc-templates?槟谥昧薸ndex文件 ,将各类厂商平台和show号令映射到相应的TextFSM模板文件 ,每个厂商的分歧号令都对应着一个独立的模板。我们在ntc-templates?榈幕∩ ,开发了基于iSlot官方网站数据中心互换机产品的模板库:ruijie-templates。ruijie-templates模板库是基于TextFSM规定开发 ,用于适配ntc-templates? ,能够无缝衔接Netmiko?槭褂。ruijie-templates?槟芄唤玦Slot官方网站数据中心互换机CLI内容进行结构化输出 ,输出了局能够直接用于Python剧本使用。该?榫喔鰅Slot官方网站主流数据中心互换机版本测试 ,覆盖RG-S6510、RG-S6520、RG-S6910、RG-S6920、RG-N18000-X系列[权5] 产品 ,目前已支持近50条常用号令解析 ,后续会逐步更新美满 ,敬请关注。目前ruijie-templates代码已托管至GitHub:https://github.com/kevinkrabi/ruijie-templates

下面介绍一下ruijie-templates?槭褂貌街。


ruijie-templates?槭褂貌街

 

装置步骤

 

前置前提:装置TextFSM库和ntc-templates库

步骤一:将ruijie-templates并入ntc-templates模板库(推荐)

步骤二:独立使用ruijie-templates库 ,必要设置环境变量 ,相对复杂(不推荐)
推荐使用步骤一将本模板库归并入ntc-templates?槭褂 ,具体操作步骤如下:


下载模板库

 

git clone git@github.com:kevinkrabi/ruijie-templates.git

模板文件导入ntc-templates

将templates目录下的所有TextFSM文件导入ntc-templates库的templates目录。


以macOS为例:


cp*.textfsm Library/Frameworks/Python.framework/Versions/3.6/lib/Python3.6/site-packages/ntc_templates/templates//index

 

增长index信息

 

以macOS为例 ,index文件地点蹊径为:

Library/Frameworks/Python.framework/Versions/3.6/lib/Python3.6/site-packages/ntc_templates/templates/index

 

找到index文件后用文本编纂软件打开 ,将以下内容全数复造粘贴到原始文件末尾即可。

把稳:由于ntc-templates模板库匹配准则 ,为预防异常情况 ,以下index条款不建议调整挨次!

iSlot官方网站 - 引领潮水

 

案例一:使用Netmiko登录设备获取输出信息

 

注明

该案例使用Netmiko仿照CLI自动化登录一台设备 ,读取关键信息并输出了局。


Netmiko是基于Paramiko开发的专门用于适配网络设备的开源Python库 ,Netmiko同时集成了TextFSM环境 ,目前最新版本Netmiko(3.3.3)已支持iSlot官方网站产品 ,device_type参数:ruijie_os


测试指标

使用Netmiko登录设备 ,通过执行“show int count rate up”号令获取设备输出信息 ,并将了局以字典方式输出。

 

iSlot官方网站 - 引领潮水

 

实现代码

 

iSlot官方网站 - 引领潮水

把稳关键字:device_type': 'ruijie_os' ,use_TextFSM=True

 

实现成效

 

iSlot官方网站 - 引领潮水

 

案例二:使用ntc-teamplates将文本结构化输出

 

注明

该案例使用ntc-templates? ,对文本内容进行结构化输出。

 

测试指标

以下图中BGP路由表为例 ,必要对“show ip bgp”号令执行了局进行结构化输出。

iSlot官方网站 - 引领潮水

 

实现代码

iSlot官方网站 - 引领潮水

把稳关键字:platform='ruijie_os'

 

实现成效

iSlot官方网站 - 引领潮水

 

写在最后

本文介绍了网络自动化运维的问题和解决规划 ,并结合两个案例介绍了ruijie-template?榈闹澳芤约笆褂貌街 ,感兴致的读者能够参考案例下载测试 ,当前的号令数量还不能满足所有业务场景 ,如您有更好的建议和定见能够留言 ,但愿这个?槟芄辉值接姓夥矫嫘枰陌槁。


附录

 

本文中介绍的有关?镚itHub地址:

ruijie-template:https://github.com/kevinkrabi/ruijie-templates

TextFSM:https://github.com/google/textfsm

ntc-templates:https://github.com/networktocode/ntc-templates

Netmiko:https://github.com/ktbyers/Netmiko

有关推荐:

有关标签:

iSlot官方网站 - 引领潮水 iSlot官方网站 - 引领潮水

点赞

更多技术博文

任何必要 ,请联系iSlot官方网站

iSlot官方网站 - 引领潮水

返回顶部

收起
iSlot官方网站 - 引领潮水 文档AI副手
iSlot官方网站 - 引领潮水 文档评价
ev-close ev-close-m
该资料是否解决了您的问题?
ev-close ev-close-m
您对当前页面的中意度若何?
不咋滴
极度好
dark-star dark-star dark-star dark-star dark-star
ev-close ev-close-m
您中意的原因是(多。?
您对文档是否还有其它的问题或建议?
为尽快解决问题 ,请您留下联系方式以便回复
邮箱
手机号
ev-bg
感激您的反。
iSlot官方网站 - 引领潮水
iSlot官方网站 - 引领潮水
iSlot官方网站 - 引领潮水
请选择服务项目
关关征询页
售前征询 售前征询
售前征询
售后服务 售后服务
售后服务
定见反馈 定见反馈
定见反馈
更多联系方式
【网站地图】