基本信息

内容简介
计算机书籍
本书从使用者的角度出发编写,学习难度由简到难。首先简单回顾了TCP/IP协议和Python基础知识,然后探讨了如何使用Python管理网络设备,尤其是如何与传统的路由器和交换机进行通信。之后介绍了如何使用Python自动化框架Ansibel来实现批量系统配置、批量程序部署、批量运行命令等功能。介绍如何采用Python工具实现基础的网络安全管理,并介绍了如何使用Python进行网络监控、搭建Web服务,也介绍了其它的网络运维管理相关技术基础,如:git代码仓库的使用、Jenkins持续集成和网络的测试驱动开发等。本书包含的内容涉及到许多基础工具的使用,每个知识点都有示例代码,读者可以一边学习,一边实践。
作译者
资深技术专家,在网络工程领域有超过18年的从业经验。曾就职于亚马逊AWS和微软Azure等公司,参与并管理了一些业内的大型网络。Eric致力于网络自动化、Python以及帮助企业建立更好的安全机制。他是关于Python和网络安全领域的几本书籍和在线课程的作者,还是两项IP电话专利的荣誉发明者。他通过图书、网络课程和博客分享其对技术的浓厚兴趣,并且对一些受欢迎的Python开源项目做出了贡献。
目录
前言
关于作者
关于审稿人
第1章 回顾TCP/IP协议簇和Python 1
1.1 互联网概述 2
1.1.1 服务器、主机和网络组件 2
1.1.2 数据中心的兴起 3
1.2 OSI模型 5
1.3 客户端–服务器模型 6
1.4 网络协议簇 7
1.4.1 传输控制协议 7
1.4.2 用户数据报协议 8
1.4.3 互联网协议 9
1.5 Python语言概述 10
1.5.1 Python版本 11
1.5.2 操作系统 12
1.5.3 运行一个Python程序 12
1.5.4 Python内置类型 13
1.5.5 Python操作符 17
前言
在本书中,我们选用Python作为掌握网络工程任务的编程语言。Python是一种易学习的高级编程语言,可以有效地激发网络工程师的创造力并提高他们解决问题的技能,以简化日常操作。Python正在成为许多大型网络的组成部分。
自第1版出版以来,我已经与本书的许多读者进行了有趣而有意义的对话。我谦卑地、发自内心地接受读者对本书第1版的反馈意见,在第2版中,我试图让示例和技术更具相关性。特别是,传统的OpenFlow SDN章节被一些网络DevOps工具所取代。我真诚地希望新添加的内容对你有所帮助。
时代的变革为技术进步提供了巨大的机会。本书中的概念和工具在我的职业生涯中给了我很大的帮助,我希望它们对你也同样有用。
本书读者对象
本书适合管理网络设备组的IT专业人员、运营工程师以及希望使用Python和其他工具来迎接网络挑战的人。
本书涵盖的内容
第1章从OSI和客户端–服务器模型到TCP、UDP和IP协议簇,回顾当今组成互联网通信的基础技术。该章将回顾Python语言的基础知识,例如类型、操作符、循环、函数和包。
第2章使用实际示例来阐述怎样在一台网络设备上使用Python执行命令,还将讨论在自动化中使用单CLI接口的挑战。该章使用Pexpect和Paramiko库作为示例。
第3章讨论支持应用程序编程接口(API)和其他高级交互方法的新的网络设备,也举例说明了允许低级任务的抽象工具,同时关注网络工程师的意图。该章将使用Cisco NX-API、Juniper PyEZ和Arista Pyeapi作为示例。
第4章讨论Ansible基础,Ansible是一个开源的、基于Python的自动化框架。Ansible比API更进了一步,专注声明性的任务意图。该章将介绍使用Ansible及其高级架构的优势,我们还将看到在Cisco、Juniper和Arista设备上的一些Ansible实际示例。
第5章建立在前一章知识的基础上,涵盖了更高级的Ansible主题,包括条件、循环、模板、变量、Ansible Vault和角色。此外,还将介绍编写自定义模块的基础知识。
第6章介绍几种Python工具来帮助你保护网络,将讨论使用Scapy进行安全性测试、使用Ansible快速实现访问列表,以及使用Python进行网络取证分析。
第7章介绍使用不同的工具监控网络。该章包含一些使用SNMP和PySNMP来查询以获取设备信息的示例。Matplotlib和Pygal示例用绘制结果进行展示,该章以使用Python脚本作为输入源的Cacti示例收尾。
第8章介绍更多的网络监控工具。该章将首先使用Graphviz从LLDP信息中绘制网络图。我们使用NetFlow和其他技术实现基于推送机制的网络监控示例,使用Python来解码流数据包并使用ntop来可视化结果,还将介绍Elasticsearch及其怎样用于网络监控。
第9章展示如何使用Python Flask Web框架为网络自动化创建自己的API。网络API提供的好处包括从网络详细信息中抽象出请求者、整合和自定义操作,以及通过限制可用操作来提供更好的安全性。
第10章展示如何使用AWS构建功能强大且具有弹性的虚拟网络。我们将介绍虚拟私有云技术,如CloudFormation、VPC路由表、访问列表、弹性IP、NAT网关、直连等。
第11章说明怎样充分利用Git进行协作和代码版本控制。该章将给出使用Git进行网络操作的实际示例。
第12章使用Jenkins自动创建操作管道,以节省时间并提高可靠性。
第13章解释如何使用Python的unittest和PyTest创建简单的测试来验证代码。我们将看到为测试网络编写的示例,以验证可达性、网络延迟、安全性和网络事务。我们还将看到怎样在持续集成工具(例如Jenkins)中集成测试。
媒体评论
本书首先回顾Python的基础知识,并讲解Python怎样与遗留的和支持API的网络设备交互。之后,你将学会利用高级Python包和框架来执行自动化、监控、管理和增强其安全性等网络工程任务。接着,你将使用Jenkins进行持续的网络集成,并用测试工具来验证网络。最后,你将能够轻松地使用Python执行所有网络任务。
通过阅读本书,你将学到:
用Python库来与网络交互。
使用Python集成Ansible 2.5来控制Cisco、Juniper和Arista eAPI网络设备。
利用现有的框架来构建高级API。
学会如何在AWS 云中构建虚拟网络。
理解如何使用Jenkins自动部署网络中的变化。
使用PyTest和Unittest进行测试驱动的网络开发。