网络工程师的Python之路:网络运维自动化实战(第2版)
| 作者: | 王印,朱嘉盛 |
|---|---|
| 出版社: | 电子工业出版社 |
| 页数: | 592页 |
| ISBN: | 9787121450273 |
书籍详情
| 用纸 | 胶版纸 |
|---|---|
| 版次 | 2 |
| 出版时间 | 2023-03-01 |
| 字数 | 828000 |
| 页数 | 592 |
| 包装 | 平装 |
| 开本 | 16开 |
| ISBN | 9787121450273 |
| 出版社 | 电子工业出版社 |
| 品牌 | 博文视点 |
| 商品编号 | 13636993 |
| 包装清单 | 暂无 |
内容简介
详细介绍

★ 资深网络老兵、知乎专栏“网路行者”作者联合“网工手艺”作者全新打造
★ 面向Python零基础网工的Go-To Book再版升级,基于Python 3.10
★ 新增TextFSM、Netmiko、Nornir、NETCONF、RESTCONF等内容,知识点更全
★ 从基础知识到实战应用,作者手把手教学,逐步引导,可作为教学用书
★ 13种Python语法知识全覆盖,助力传统网工轻松转型
★ 10余种Python网络运维相关模块,举例介绍更多实用工具
★ 60余个实验,覆盖模拟器及真机(思科和华为设备),实用性更强
★ 加入微信读者群,与万千网工共同学习Python知识
★ 更有作者亲自指导,为网络工程师营造“自学自驱”学习氛围
本书第1版于2020年11月出版发行后大获成功,Python及NetDevOps技术在国内计算机网络圈子里迅速走红,国内与NetDevOps相关的技术文章在网络上如雨后春笋般大量涌现,行业里也出现了很多要求掌握NetDevOps技术的网络工程师职位,并且需求越来越多,NetDevOps是“下一代网络工程师”必须掌握的技能已经成为既定且不可逆的事实。
以Python为主的NetDevOps技术知识更迭很快,第2版将在第1版的基础上添加TextFSM详解、Netmiko详解、Nornir详解、NETCONF详解及RESTCONF详解等5章内容,并去掉pyping、pyntc、netdev等一些不再流行或者作者已经公开宣布不再维护的模块内容。
另外,第2版将在思科设备的基础上添加华为设备的内容,由朱嘉盛老师执笔,相信能对主要使用国产设备的国内网络工程师更加有益。
王印,知乎专栏“网路行者”作家,知乎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版发行后,将其中的思科设备实验适配成华为设备实验,并加入大量自己的理解与思考,同时在相关读者群中坚持答疑和提供支撑服务,引领众多读者成功将技术应用到其他国产设备。
身为一名在网络安全行业从业的工程师,经常面临客户和现有安全产品整合或大批量群编辑之类的需求,手动配置耗时费力还容易出错,该书由浅入深地让我这样一个Python新手对脚本自动化编排有了快速上手和实战中调用的经验,非常实用,极力推荐!
—刁文杰,新加坡派拓网络(Palo Alto)亚太区客户体验架构师
计算机网络的自动化和可编程化是未来的发展趋势。王印先生在网络和编程的融合上有着非常丰富的经验。相信本书可以很好地帮助网络工程师们开启网络自动化和可编程化的大门。
—董海宇,新加坡新传媒(Mediacorp)首席网络工程师
第一次认识王印兄弟是在基于智慧校园的合作项目中,我们就中国的数字化技术走向国际市场进行了探讨。王印不仅在网络领域的专业性毋庸置疑,还能孜孜不倦地分享知识,值得点赞。本书系统地讲述了Python编程知识,是普惠大众的好书,不论是在校大学生还是职场人士,都能够通过此书获取编程技能,强力推荐!
—樊宪政,阿里巴巴旗下浩鲸科技华南区原总经理、腾讯云(南中国区)原战略合作总监
如今的IT从业者正处在一个最好的时代,一个技术相互连接的时代。传统的网络工程师可以通过学习编程来扩展传统网络技术,自动执行重复而烦琐的工作任务,简化人力的投入和规避误操作的风险。程序员也可以通过学习网络技术来更加深入地了解数据包的传递方式和协议之间的优劣,从而写出更加优质且适用于真实环境的代码。本书作者从网络工程师的角度出发,将程序员编程的思维带入了网络领域。不仅如此,大量真实案例的引用将引起你思维的共鸣与对额外设想可能性的思考。更让我惊讶的是,本书使用类似笔记的形式通过通俗易懂的文字详述了每一个实用案例的完整配置步骤,这将是非常适合网络工程师的Python入门教程。
—李小沛,思科认证讲师、亚马逊AWS认证讲师
新形势下,虚拟网络发展、SDN兴起、云计算复杂环境及海量操作,对传统网络工程师来说可谓不可承受之痛。且在网络工程领域,受限于网络工程师的技术栈,如何科学有效地提高DevOps能力,仍存在不少挑战。本书是市面上为数不多的作者有深厚功底及丰富项目实操经验,且以网络工程师的视角和思路指出了一条网络自动化从0到1切实可行的转型道路的书。尤其对于没有任何编程能力的网络工程师满足企业网络可视化、自动化、智能化的运维的需求,本书将是不二之选。
—李耀,百度原网络工程师
这是一本以Python语言作为工具,从网络工程师的视角讲解如何利用Python来实现网络运维自动化的工程实践图书。全书以操作实践为基础,系统地梳理了Python语言的基础知识,并在此基础上将其运用于网络运维实战,是一本为网络工程师量身打造的网络运维自动化实践之书,值得一读。
—茹炳晟,腾讯 Tech Lead、中国计算机学会CCF TF 研发效能SIG主席
印兄于我,亦师亦友,他为人诚恳谦和,技术扎实过硬,每次探讨难题,即便十分忙碌,他也依然第一时间抽身为我排忧解难。寒门出贵子,十年磨一剑,通过网络平台,印兄倾囊分享其细腻的技术细节、励志的人生经历、前沿的技术精华和不对一般人外传的职场秘诀,他是华人网络工程师领域的众人福音、闪耀明灯。
—王昊颖Henry Wang,摩根大通(新加坡)ECN网络经理
2006年Google在搜索引擎大会上正式提出“云计算”后,接踵而至的就是把DevOps、SysOps推到了台前。借助越来越成熟的云平台技术,DevOps和SysOps也越来越凸显出其强大的一面—自动化。而今NetOps作为其中的一个分支,也慢慢走到台前。本书作者是非常有先见之明的,从2013年就开始开发并实践自己的网络自动化脚本,而且从中获得了很大的成效。对于一个上千台网络设备的架构,按照传统人为操作更新,可能需要多人合作一个星期才能完成,而作者通过网络自动化进行多线程并行操作,大大缩减了对人力资源的需求。在此我还要替本书电子版的读者小田感谢作者。通过两个星期学习搭建环境和体验作者的书内实例,他获得了法国巴黎银行的青睐,加入了其日常网络运维团队。由此可见,NetOps已经成为未来网络工程师的一个趋势。本书将会成为你从一个普通网络工程师转型为自动化网络工程师很好的启蒙教材。
—王渊浩,新加坡Lazada IT基础设施经理
本书作者是网络行业的“新人老兵”,也是我见过英文能力最突出的网络工程师。说新人是因为他年纪确实不大,说老兵是因为他的工作经历及参与项目的规模和质量是他这个年龄的人所无法企及的。本书是对他十多年海外工作经验的最好总结,具有很强的实操性,相信能够为下一代网络工程师提供不可估量的精神和业务食粮。
—温健,澳大利亚蒙纳士大学苏州校区首席运营官、总经理、副校长
对于很多跨专业的读者而言,一般IT编程语言类图书往往难以入手及持续阅读。很大一部分原因在于读者背景的广泛性造就了其对基本概念的了解参差不齐。在此影响下,阅读与学习的效果往往大打折扣。而本书则有针对性地解决了这个问题。王兄从一个传统网络工程师的角度入手,指导大家学习Python编程语言,并利用其实现网络自动化任务。本书运用了网络工程师最熟悉的路由器、交换机来配合展示Python语言的特性,并适当结合生产环境中常常出现的自动化需求,让拥有基本网络背景的工程师们可以迅速掌握Python的精髓,理解网络自动化的优势,并且轻松展开模拟练习。在网络自动化的大趋势下,王兄的力作不仅启发、激励我为网络自动化进程添一份绵力,更值得所有有志于此的同行们阅读。未来,期待王兄的更多力作。
—吴茱萸 Conor Wu,爱尔兰爱彼迎(Airbnb)全球网络工程师
我和王印相识于新加坡,他是个网络红人,亲自参与了很多网络运维环境和方案的设计,合作方有国际知名投行,有政府部门,也有巨头企业。更可贵的是,他乐于分享网络实战经验和方案,并且热心给网络同行很多帮助和启发。随着互联网的高速发展,在维护和管理成百上千的网络设备时,传统网络工程师面临着很多挑战和局限,SDN的兴起也要求网络工程师具有编程能力。传统网络工程师往往不懂编程,而编程人员又往往不了解网络运维和方案。在这个跨界的年代,懂网络又懂Python会让作为网络工程师的你变得更有竞争力,同时得到猎头公司的青睐。市面上很难找出一本专门针对网络工程师学习Python的书,而本书由浅入深,并在后期以实验的方式讲解Python在网络运维中的应用,可以让你更快地理解如何通过Python实现网络运维自动化,强烈推荐!
—熊希仁Ryan Xiong,华为(新加坡)原网络方案经理、梭子鱼网络(Barracuda Networks)售前工程师
我看过很多教Python编程的书,不是逻辑混乱就是干货不够,本书作者王印是资深网络老兵,从新加坡开始先后任职于美国AT&T、苹果、苏格兰皇家银行、沙特KAUST等世界一流公司和大学,从行业经验来看,少有人能匹敌。整本书逻辑清晰,由浅入深,连配图的标记都很用心,是一本很难得的实用型编程工具书,有料有颜值,值得拥有。
—杨雯莉,深圳申鲲科技有限公司CBO、中国移动互联网产品原品牌管理师
随着科技和商业的快速发展、第四次工业革命(4IR)的到来,网络技术的演变日新月异。
在今天的网络技术领域,如何能够满足大规模网络灵活高效、高质稳定运维的极致需求,是所有IT管理者都应该深入思考的问题,我相信网络基础设施建设和运维管理的标准化、自动化、数据可视化、智能化是大势所趋。本书作者结合丰富的实际案例,通过分享亲身经历及其转型经验,由浅入深地讲解了网络运维与Python的完美结合,并展示了其广阔的国际视野。本书干货满满,不仅能够带你走上新一代网络工程师快速转型之路,还能助你在未来国际化网络技术的舞台上蓬勃发展。
此外,作者本人不但是有着10多年经验的资深网络工程师,还为许多IT从业者带来了鼓舞和启示,此书是所有网络从业人员的“Go-To Book”,值得推荐。
—叶龙Leon Ye,腾讯亚太区(新加坡)IT总监
认识王印是在深圳城市数字化转型委员会的一次活动上。这位辗转了多个国家的IT精英,现在应该已成为沙特阿拉伯现代化转型的栋梁之材。我虽与他交流不多,但有幸看到他的书稿还是十分高兴。回想20世纪80年代中期我在国内大学教企业管理信息化,至今还对Fortran、ALGOL、COBOL、BASIC等应用程序记忆犹新。我虽未接触过Python,但看王印的书,感觉思维逻辑和表述层次非常清晰,相信本书会帮到以中文为母语的编程人士。
—易全,深圳市信息化与工业化融合研究院执行院长、深圳市科技金融促进会创会会长、城市数字化转型委员会高级顾问










第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代码!具体的代码这里先按下不表,后面再安排它出场。
总结一下,在某生产车间中,一批不锈钢板被送入生产机器,配合着不同的模具,“咔咔咔”变成各种不锈钢零件。这样的类比,你能不能有点感性认识了呢?
· 不锈钢板(“生产原料”)→设置配置、指令回显(待匹配字符串、输入文本)。
· 不同模具(“生产模具”)→TextFSM模块。
· 生产工具(“生产机器”)→Python脚本。
再版前言
光阴似箭,岁月如梭。转眼之间,距离本书最早的电子书出版已经过去了三年之久。承蒙广大读者的厚爱,电子书和第1版纸质书的发行量远远地超出了我的预期。这也使我感到有必要更新内容,再版此书,以飨读者。
IT技术日新月异,Python和NetDevOps领域也不例外。第2版基于截稿前最稳定的Python 3.10.6,对基于Python 3.8.6的第1版里的每一章内容都作了修改、更新、补充或删减,去掉了一些已经不再流行或作者已经公开宣布不再维护的模块,如pyping、pyntc、netdev等,在第1版总共6章内容的基础上新加入了TextFSM详解、Netmiko详解、Nornir详解、NETCONF详解及RESTCONF详解5章内容,让第2版的内容及书的厚度相较于第1版完全翻倍。
本书第1版发行后,Python及NetDevOps技术在国内计算机网络圈子里迅速走红,国内与NetDevOps相关的技术文章在网络上如雨后春笋般大量涌现。鉴于笔者工作环境的限制,第1版所有实验部分的内容是完全基于思科的设备创作的,很多第1版的读者针对本书的内容以华为、H3C等国产设备做了相应的补充,其中最引人注目的是读者朱嘉盛老师,在本书第1版发行两年来,笔耕不辍的他在知乎个人专栏里将笔者第1版几乎所有的内容都用华为设备“重写”了一遍,加入了很多他个人的理解和心得,并在读者群里耐心解答新人们的各类提问。有鉴于此,第2版特意邀请了朱嘉盛老师作为联合作者,朱嘉盛老师将在本书实验篇章里加入华为设备的使用说明,第7章TextFSM详解也完全由他执笔。另外,也非常感谢电子工业出版社李秀梅老师对本书出版的热情支持与多方面的协助,和这样能力卓著、认真负责的编辑共事是一个作者的幸运。
人类社会在发展,科学技术在进步,虽然国内NetDevOps技术起步较晚,总体落后国外先进国家,但是中国地大物博、人才济济,本书第1版发行两年来,这一领域已经涌现出一大批深入钻研、乐于分享的国内读者。中国已经逐步从2019年之前的NetDevOps学“荒漠”成长为NetDevOps学“大国”。然而要从一个NetDevOps学“大国”成长为一个NetDevOps学“强国”,尚需国内同仁的勇于探索、广泛交流、求真务实,杜绝急功近利,摒弃浮躁之风。若能如此,我们的目标不但能够实现,且将为期不远。希望本书能为我们实现这一目标起到抛砖引玉、添砖加瓦的作用,为国内广大年轻的网络工程专业学子和职业人士提供一个比较准确、系统并富有理念的NetDevOps学读本,不求包罗万象,旨在言简意赅、提纲挈领。这是第1版的宗旨,也是第2版的指南。
王 印
2022年8月23日于沙特阿拉伯