前言
正如查尔斯·狄更斯在《双城记》中所写:“这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚昧的时代”。这些看似矛盾的语句完美地描述了变革与转型时期的混乱和情绪。毫无疑问,随着网络工程领域的快速变化,我们正经历着类似的时期。随着软件开发日益集成到网络的各个方面,传统的命令行界面和垂直集成的网络栈方法不再是管理当今网络的最佳方法。对网络工程师来说,我们看到的变化充满了兴奋和机遇,但也充满挑战,尤其是对于那些需要快速适应并跟上变化的人。写这本书的目的是要提供一个实用指南,介绍如何从一个传统平台发展为基于软件驱动实践构建的平台,帮助网络专业人员更轻松地适应这种转型。
在这本书中,我们选择使用Python作为掌握和处理网络工程任务的编程语言。Python是一个易于学习的高级编程语言,可以有效地激发网络工程师的创造力,并提供他们解决问题的能力,以优化日常操作。Python正在成为很多大型网络不可少的组成部分,我希望能够通过这本书与你分享我的一些经验教训。
自这本书第1版和第2版出版以来,我与本书的很多读者进行了有趣而有意义的对话。
前两版的成功让我受宠若惊,并把收到的反馈铭记于心。在第3版中,我努力加入了很多更新的库,使用最新的软件和更新的硬件平台来更新现有的例子,另外还增加了我认为对当今网络工程师很重要的两章。
变革的时代为技术进步提供了巨大机遇。这本书中的概念和工具对我的职业生涯有很大帮助,希望对你也能有同样的帮助。
本书面向对象
这本书非常适合IT专业人员和运维工程师,他们已经在管理网络设备组,希望扩展他们的知识使用Python和其他工具来迎接网络挑战。学习这本书建议具备基本的网络和Python知识。
本书内容
第1章 TCP/IP协议簇和Python回顾回顾了当今互联网通信的基础技术,从OSI和客户-服务器模型谈到TCP、UDP和IP协议簇。这一章还回顾了Python语言的基础知识,例如类型、操作符、循环、函数和包。
第2章 低层网络设备交互使用实际示例来说明如何在一个网络设备上使用Python执行命令,还将讨论自动化中只使用CLI接口面对的挑战。这一章将使用Pexpect、Paramiko、Netmiko和Nornir库给出一些例子。
第3章 API和意图驱动网络讨论支持应用编程接口(API)和其他高层交互方法的更新的网络设备。这里还介绍了支持低层任务抽象同时关注网络工程师意图的工具。这一章对CiscoNX-API、Meraki、JuniperPyEZ、AristaPyeapi和VyattaVyOS做了讨论并给出了相关示例。
第4章 Python自动化框架:Ansible基础讨论了Ansible基础知识,这是一个开源的、基于Python的自动化框架。Ansible比API更进了一步,重点关注声明性的任务意图。这一章中,我们将介绍使用Ansible及其高层架构的优势,还会看到在Cisco、Juniper和Arista设备上使用Ansible的一些实际例子。
第5章 Python自动化框架:进阶建立在前一章知识的基础上,涵盖了更高级的Ansible主题,包括条件、循环、模板、变量、AnsibleVault和角色。此外,还会介绍编写自定义模块的基础知识。
第6章 使用Python实现网络安全将介绍几个帮助保护网络安全的Python工具,这里将讨论使用Scapy完成安全性测试、使用Ansible快速实现访问列表,以及使用Python进行网络取证分析。
第7章 使用Python实现网络监控:第1部分将介绍使用不同的工具监控网络。这一章包含使用SNMP和PySNMP来查询以获得设备信息的一些例子。另外会给出Matplotlib和Pygal示例,绘图显示结果,这一章最后会给出一个使用Python脚本作为输入源的Cacti示例。
第8章 使用Python实现网络监控:第2部分将介绍更多网络监控工具。这一章首先介绍使用Graphviz由LLDP信息绘制网络图。接下来使用NetFlow和其他技术实现基于推送机制的网络监控示例。我们将使用Python解码流数据包并使用ntop可视化结果,还将对Elasticsearch做一个概述,并介绍这个工具如何用于网络监控。
第9章 使用Python构建网络Web服务将介绍如何使用PythonFlaskWeb框架创建你自己的网络自动化API。网络API有很多好处,如从网络详细信息抽象请求者、整合和定制操作,以及通过限制可用操作来提供更好的安全性。
第10章 AWS云网络将展示如何使用AWS构建一个功能强大而且有弹性的虚拟网络。我们将介绍一些虚拟私有云技术,如CloudFormation、VPC路由表、访问列表、弹性IP、NAT网关、DirectConnect以及其他一些相关主题。
第11章 Azure云网络将介绍Azure提供的网络服务以及如何由此构建网络服务。我们将讨论AzureVNet、ExpressRoute和VPN、Azure网络负载均衡器以及其他一些相关的网络服务。
第12章 使用ElasticStack完成网络数据分析会展示如何使用ElasticStack作为一组紧密集成的工具来帮助我们分析和监控网络。我们将介绍从安装、配置、用Logstash和Beats导入数据,以及使用Elasticsearch搜索数据,直到用Kibana进行可视化的各个方面。
第13章 使用Git将介绍怎样充分利用Git进行协作和代码版本控制。这一章将给出使用Git完成网络操作的实际示例。
第14章 使用Jenkins持续集成将介绍使用Jenkins自动创建操作流水线,从而节省时间并提高可靠性。
第15章 网络测试驱动开发将解释如何使用Python的unittest和pytest创建简单的测试来验证代码。我们还会看到为验证可达性、网络延迟、安全性和网络事务编写网络测试的例子。另外会介绍如何在持续集成工具(例如Jenkins)中集成测试。
充分利用这本书
为了充分利用这本书,建议读者要具备一些基本的网络实际操作知识和Python知识。除了第4章和第5章需要按顺序阅读外,大部分章节都可以按任意的顺序阅读。除了本书开头介绍的基本软件和硬件工具外,在后面还会介绍与各章相关的新工具。
强烈建议在你自己的网络实验室中学习和实践这里给出的例子。
下载示例代码文件
可以从你的www.packt.com账户下载这本书的示例代码文件。如果你在其他地方购买了这本书,可以访问www.packtpub.com/support并注册,我们将直接通过email为你提供这些文件。
可以按照以下步骤下载代码文件:
(1)登录或注册www.packtpub.com。
(2)选择Support标签页。
(3)点击CodeDownloads& Errata。
(4)在Search框中输入书名,并按照屏幕上的说明下载。
一旦下载了文件,确保使用以下最新版本的解压缩软件解压缩文件夹:
? WinRAR/7-Zip (Windows)。
?Zipeg/iZip/UnRarX (Mac)。
?7-Zip/PeaZip (Linux)。
我们还在GitHub上托管了本书的代码包(https://github.com/PacktPublishing/Mastering-Python-Networking-Third-Edition)。如果代码有更新,会在GitHub存储库上更新。另外,https://github.com/PacktPublishing/上提供了我们的大量图书和视频的其他代码包。看看有什么!
彩色图片下载
我们还提供了一个PDF文件,其中包含这本书中使用的截图/图表的彩色图片。可以从这里下载:https://static.packt-cdn.com/downloads/9781839214677_ColorImages.pdf。
排版约定
这本书使用了以下排版约定。
正文中的代码(CodeInText):指示正文中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和推特句柄。例如:" auto-config还会为telnet和SSH生成vty访问"。
代码块格式如下:
#Thisisacomment
print("helloworld")
命令行输入或输出格式如下:
$Python
Python3.6.8(default,Oct72019,12??59??55)
[GCC8.3.0]onlinux
Type"help","copyright","credits"or"license"formoreinformation.
>>>exit()
粗体(Bold):指示一个新术语、重要单词或者屏幕上看到的单词。例如,菜单或对话框中的单词在正文中就会以这种形式显示。例如: “在下一节中,我们继续讨论网络监控的SNMP主题,不过会介绍一个名为Cacti的功能完备的网络监控系统”。
这表示警告或重要说明。
这表示提示和技巧。
联系我们
非常欢迎读者的反馈。
一般反馈:如果你对这本书的任何方面有问题,请发电子邮件给我们:customercare@packtpub.com,并在消息主题中提到本书书名。
勘误:尽管我们竭尽所能想要确保内容的准确性,但还是会有错误发生。如果你发现本书中的错误,请告诉我们,我们将非常感谢。请访问http://www.packt.com/submit-errata,
选择这本书,点击ErrataSubmissionForm (勘误提交表)链接,并填入详细信息。
非法复制:如果你看到我们的作品在互联网上有任何形式的非法拷贝,希望能向我们提供地址或网站名,我们将不胜感谢。请联系copyright@packtpub.com并提供相应链接。
如果你有兴趣成为一名作者:如果你在某个领域很有经验,而且有兴趣写书或者希望做些贡献,请访问http://authors.packtpub.com。
评论
请留言评论。阅读并使用了这本书之后,你可以在购买这本书的网站上留言评论,这样潜在读者就能看到你的公正观点,并以此决定是否购买这本书。作为出版商,Packt能从中了解你对我们的书有什么想法,另外作者也能看到对他们的作品的反馈。非常感谢!
关于Packt的更多信息,请访问packtpub.com。
?