搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
网络工程师的Python之路:网络运维自动化实战(第2版)(博文视点出品)
0.00     定价 ¥ 138.00
浙江图书馆
  • ISBN:
    9787121450273
  • 作      者:
    王印,朱嘉盛
  • 出 版 社 :
    电子工业出版社
  • 出版日期:
    2023-03-01
收藏
畅销推荐
编辑推荐

★ 资深网络老兵、知乎专栏“网路行者”作者联合“网工手艺”作者全新打造

★ 面向Python零基础网工的Go-To Book再版升级,基于Python 3.10

新增TextFSM、Netmiko、Nornir、NETCONF、RESTCONF等内容,知识点更全

★ 从基础知识到实战应用,作者手把手教学,逐步引导,可作为教学用书

★ 13种Python语法知识全覆盖,助力传统网工轻松转型

★ 10余种Python网络运维相关模块,举例介绍更多实用工具

60余个实验,覆盖模拟器及真机(思科和华为设备),实用性更强

★ 加入微信读者群,与万千网工共同学习Python知识

★ 更有作者亲自指导,为网络工程师营造“自学自驱”学习氛围


展开
作者简介

王印,知乎专栏“网路行者”作家,知乎ID:弈心,沙特阿卜杜拉国王科技大学(King Abdullah University of Science and Technology,KAUST)高级网络工程师,14年海外从业经验,CCIE#40245。2009年起在新加坡先后任职于美国电信运营商AT&T、美国数据中心公司Equinix、新加坡陆路交通管理局(LTA)、新加坡石林IT咨询公司(SFIT)、美国苹果公司、苏格兰皇家银行(RBS),对大型园区、金融行业的网络设计与运维具有丰富的实战经验。


 

朱嘉盛,知乎专栏“网工手艺”作者,2010年毕业于华南理工大学,网络工程师13载,长期扎根网络运维第一线。通信网从2G到5G,互联网从几乎空白建设运维到百万级用户规模,在这些领域均具备丰富的大网络实战经验。工作之余,热爱阅读与写作,善于梳理知识,乐于分享和帮助新手。近年来深耕Python网络自动化领域。在本书第1版发行后,将其中的思科设备实验适配成华为设备实验,并加入大量自己的理解与思考,同时在相关读者群中坚持答疑和提供支撑服务,引领众多读者成功将技术应用到其他国产设备。


展开
精彩书摘

第7章


TextFSM详解 


在第1版出版后,我们收到了很多读者朋友们的积极反馈。其中,一个重要反馈集中在国产设备的联机适配问题上,即在思科设备上的操作,是否可以,以及如何才能迁移适配到国产设备上?于是,我们在第2版增加了国产设备适配的内容。这部分虽以华为设备做示例,但实际上也可覆盖至其他国产品牌设备。另一个重要反馈集中在登录设备抓取回显报文后如何能快速有效地解析,诸如ntc-templates中涉及国产设备的模板少之又少。于是,我们在第2版专门安排一章,介绍一个强大的文本解析工具——TextFSM,旨在通过几个实战案例练习后,读者朋友们可按自己的需求自制模板,从而有效地开展联机解析或离线解析。


TextFSM是Google开发的一个用来处理网络设备输出信息的第三方库,旨在通过以匹配自定义模板的方式,将无规律文本内容打造成自己想要的有序数据格式,方便操控数据。虽然TextFSM设计之初旨在解析网络设备输出,但实际上其可应用的范围非常广,可以处理任何文本类信息,比如邮件内容、短信内容。


TextFSM允许我们制作模板来解析设备配置,“成块”处理指令回显。因此,使用TextFSM要比传统的逐行读取解析等方法方便很多。此外,模板对处理套路还有累积沉淀效应,分享起来也很方便,拿到别人写的模板,等于前人给你造了轮子;分享自己制作的模板,等于你给后人造了轮子。这里顺便提一下,我们使用TextFSM联动思科等国外厂商设备时,往往还会辅助使用另一个第三方库——ntc-templates。该库是network To Code团队用TextFSM花费了无数心血开发出来的一套模板集,可以理解成有一个造轮子的厂。但目前在ntc-templates中,鲜有国产设备的相关模板,因此本章不重点介绍。正因为ntc-templates支持国产品牌的模板很少,本章就以华为设备举例。既然没有现成的轮子,那么我们更有理由自己学习TextFSM的基本用法,写出自己想要的模板来。


学习TextFSM之前,能知道一点正则表达式基础知识会更好些;当然,没有正则表达式基础则兼顾学习起来即可。从理论上讲,TextFSM能解决的问题,正则表达式都能解决。但是,TextFSM使用起来会比正则表达式简化且清晰,可以有效屏蔽过于复杂的正则规则,相应的Python代码量会大幅降低。学习某个陌生的Python第三方模块,一个有效途径就是看具体案例教程和实战总结分享,另一个有效手段则是直达官网,查阅官网文档。官网手册为原汁原味的第一手材料,能原文阅读则效果更佳。参考案例教程(比如本章)了解实战,并逐步探索官网手册,两者结合起来,这就是我们推荐的学习路径。


为避免行文冗长和表述枯燥,我们不安排专门的TextFSM模板基础语法介绍章节,而直接通过实验切入,逐层带入常用语法点,并逐步引导读者能自己在官方手册中进行信息检索,从而掌握该库的使用。好了,我们开始吧!


7.1  TextFSM的安装及引例


7.1.1  TextFSM的安装

本章节在Windows 10上开展实验。我们先安装TextFSM库,之后通过一个小例子作为引入,同时展示一下TextFSM的魅力。


pip3 install textfsm 


安装过程比较简单,与其他第三方模块类似,在本书前面章节已多次提及,这里不再赘述。


C:\>pip show textfsm


Name: textfsm


Version: 1.1.3


Summary: Python module for parsing semi-structured text into python tables.


Home-page: https://github.com/google/textfsm


Author:


Author-email:


License: Apache License, Version 2.0


Location: c:\program files\python310\lib\site-packages


Requires: future, six


Required-by: netmiko, ntc-templates 


从上述信息,我们可以获得当前安装的TextFSM版本、官网地址、依赖包等信息。在你阅读时,TextFSM版本或许已有差异,但基本知识通常不会有太大变化。


7.1.2  TextFSM引例类比

TextFSM初看复杂,我们先用一个“简单”例子,结合日常生活、生产场景做知识迁移,串讲一下TextFSM到底是干吗的、能怎么用,以便快速入门。


我们把整个Python环境下TextFSM引擎解析的过程,类比成一个生产车间生产产品的过程,来一点点剖析。


1.  生产车间(生产原料)

找一台华为数通设备,CLI上执行tracert跟踪指令,获取回显信息,如下所示。


<R1>tracert 192.5.5.5


tracert 192.5.5.5


 traceroute to  192.5.5.5(192.5.5.5), max hops: 30 ,packet length: 40,press CTRL_C to break


 1 36.1.1.6 60 ms  50 ms  10 ms


 2 67.1.1.7 100 ms  90 ms  80 ms


 3 78.1.1.8 90 ms  80 ms  60 ms


 4 59.1.1.9 100 ms  90 ms  80 ms


 5 59.1.1.5 90 ms  100 ms  60 ms 


此时,不用关心实际组网与拓扑,聚焦这个交互报文即可。在Python中,它就是一个字符串数据(str类型)。通常,对网络工程师而言,此类信息要么是设备配置数据,要么是指令回显内容。我们把这些信息当成“生产原料”。


2.  生产车间(生产模具)

“生产原料”有了,就要出产品,就得有“生产模具”辅助成型。在TextFSM中,“生产模具”也叫“模板”。模板也是文本信息,同样可以放入文本文件中。


Value ID (\d+)


Value Hop (\S+) 


Start


  ^ ${ID} ${Hop} +\d+ -> Record


3.  生产车间(生产机器)

生产原料、生产模具都到齐后,自然得把“生产机器”搬上来。“生产机器”其实就是Python代码!具体的代码这里先按下不表,后面再安排它出场。


总结一下,在某生产车间中,一批不锈钢板被送入生产机器,配合着不同的模具,“咔咔咔”变成各种不锈钢零件。这样的类比,你能不能有点感性认识了呢?


&middot;     不锈钢板(“生产原料”)→设置配置、指令回显(待匹配字符串、输入文本)。


&middot;     不同模具(“生产模具”)→TextFSM模块。


&middot;     生产工具(“生产机器”)→Python脚本。


展开
目录



展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江图书馆的读者帐号和密码进行登录

点击获取验证码
登录