|
|
|
|
组合商品(把光标放在图片上可查看产品名称) |
|
|
|
|
商品简介 |
|
作者简介
Eric Chou是一位有超过18年行业经验的技术专家。他在亚马逊AWS、微软Azure和其他一些公司工作期间,曾服务并管理了一些工业界的大型网络。Eric致力于网络自动化、Python以及帮助企业建立更好的安全机制。Eric是关于Python和网络安全领域的几本书籍和在线网络课程的作者。他是两项IP电话专利的荣誉发明者。Eric通过他的书籍、网络课程和博客分享他对技术的浓厚兴趣,并且对一些受欢迎的Python开源项目做出了贡献。
目 录
Contents 目 录
译者序
前言
关于作者
关于审稿人
第1章 回顾TCP/IP协议簇和Python1
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
1.5.6 Python控制流工具18
1.5.7 Python函数19
1.5.8 Python类19
1.5.9 Python模块和包20
1.6 小结21
第2章 低级网络设备交互22
2.1 CLI面临的挑战23
2.2 搭建虚拟实验24
2.2.1 Cisco VIRL25
2.2.2 Cisco DevNet和Cisco dCloud28
2.2.3 GNS329
2.3 Python Pexpect 库30
2.3.1 Pexpect安装31
2.3.2 Pexpect概述31
2.3.3 第一个Pexpect程序35
2.3.4 Pexpect的更多功能36
2.3.5 Pexpect和SSH37
2.3.6 将Pexpect的所有内容都放到脚本中37
2.4 Python Paramiko库38
2.4.1 Paramiko安装39
2.4.2 Paramiko概述39
2.4.3 第一个Paramiko程序42
2.4.4 Paramiko的更多功能42
2.4.5 Paramiko可重用性44
2.5 展望45
2.6 小结46
第3章 API和意图驱动网络47
3.1 基础设施作为代码48
3.1.1 意图驱动网络48
3.1.2 屏幕抓取与API结构化输出49
3.1.3 基础设施的数据建模作为代码51
3.2 Cisco API和Cisco ACI52
3.2.1 Cisco NX-API 53
3.2.2 Cisco和YANG模型58
3.2.3 Cisco ACI58
3.3 Juniper网络的Python API60
3.3.1 Juniper和NETCONF61
3.3.2 开发者的Juniper PyEZ64
3.4 Arista Python API68
3.4.1 Arista eAPI管理68
3.4.2 Arista Pyeapi库72
3.5 厂商中立的库76
3.6 小结76
第4章 Python自动化框架—Ansible基础知识77
4.1 一个更具声明性的框架78
4.2 Ansible示例79
4.2.1 控制节点安装79
4.2.2 运行不同版本的Ansible源代码80
4.2.3 实验建立81
4.2.4 第一个Ansible playbook示例81
4.3 Ansible的优点85
4.3.1 无代理85
4.3.2 幂等性85
4.3.3 简单且可扩展86
4.3.4 网络供应商支持86
4.4 Ansible架构87
4.4.1 YAML88
4.4.2 清单89
4.4.3 变量90
4.4.4 使用Jinja2的模板93
4.5 Ansible网络模块93
4.5.1 本地连接和facts93
4.5.2 provider参数94
4.6 Ansible Cisco示例95
4.7 Ansible Juniper示例99
4.8 Ansible Arista示例101
4.9 小结102
第5章 Python自动化框架—进阶知识103
5.1 Ansible条件语句104
5.1.1 when子句104
5.1.2 Ansible网络facts106
5.1.3 网络模块的条件化108
5.2 Ansible循环109
5.2.1 标准循环109
5.2.2 循环字典110
5.3 模板112
5.3.1 Jinja2模板113
5.3.2 Jinja2循环114
5.3.3 Jinja2的条件化114
5.4 组变量和主机变量116
5.4.1 组变量117
5.4.2 主机变量118
5.5 Ansible Vault119
5.6 Ansible的include和角色120
5.6.1 Ansible的include语句120
5.6.2 Ansible的角色121
5.7 编写自定义Ansible模块124
5.7.1 第一个自定义模块125
5.7.2 第二个自定义模块127
5.8 小结128
第6章 Python下的网络安全129
6.1 搭建实验环境129
6.2 Python Scapy132
6.2.1 安装Scapy133
6.2.2 交互示例133
6.2.3 嗅探135
6.2.4 TCP端口扫描136
6.2.5 ping集合138
6.2.6 常见攻击139
6.2.7 Scapy资源140
6.3 访问列表140
6.3.1 使用Ansible实现访问列表141
6.3.2 MAC访问列表143
6.4 Syslog搜索144
6.5 其他工具147
6.5.1 专用VLAN147
6.5.2 使用Python的UFW147
6.5.3 延伸阅读148
6.6 小结148
第7章 Python下的网络监控—第一部分150
7.1 实验准备151
7.2 SNMP151
7.2.1 准备152
7.2.2 PySNMP154
7.3 用于数据可视化的Python159
7.3.1 Matplotlib 159
7.3.2 Pygal 165
7.4 用于Cacti的Python169
7.4.1 安装169
7.4.2 作为输入源的Python脚本170
7.5 小结172
第8章 Python下的网络监控—第二部分173
8.1 Graphviz174
8.1.1 实验准备174
8.1.2 安装176
8.1.3 Graphviz示例176
8.1.4 Python Graphviz示例178
8.1.5 LLDP邻居绘图178
8.2 基于流程的监控185
8.2.1 Python下的NetFlow解析185
8.2.2 ntop流量监视189
8.2.3 sFlow194
8.3 Elasticsearch(ELK堆栈)198
8.3.1 设置托管ELK服务198
8.3.2 Logstash格式199
8.3.3 Logstash格式的Python助手脚本200
8.4 小结202
第9章 使用Python构建网络Web服务203
9.1 Python Web相关框架比较204
9.2 Flask和实验设置206
9.3 Flask的相关介绍207
9.3.1 HTTPie客户端208
9.3.2 URL路由209
9.3.3 URL变量210
9.3.4 URL的生成211
9.3.5 jsonify返回值211
9.4 网络资源API212
9.4.1 Flask-SQLAlchemy212
9.4.2 网络内容API214
9.4.3 API设备216
9.4.4 API的设备ID218
9.5 网络动态操作218
.....
前 言
正如查尔斯·狄更斯在《双城记》中写道:“这是最好的时代,也是最坏的时代;这是智慧的时代,也是愚蠢的时代。”这看似矛盾的话完美地描述了改变和过渡时期的混乱。无疑网络工程领域正在经历着类似的快速改变。当软件开发在网络各方面更集成化时,传统的命令行接口和垂直集成的网络栈方法不再是管理当今网络的最佳方式。对于网络工程师来说,这种变化充满了兴奋和机遇,但也充满挑战,特别是对于那些需要适应和快速跟上变化的人。本书介绍了如何从传统平台发展为基于软件驱动实践的平台,以帮助网络专业人员适应这一过渡时期。
在本书中,我们选用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基础知识。大多数章节可以按任意顺序阅读。第4章和第5章应按顺序阅读。除了本书开头介绍的基本软件和硬件工具外,也介绍了与每章相关的新工具。
强烈建议读者动手实践本书中的示例。
下载示例代码和彩色图片
本书的示例代码及所有截图和样图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
约定
本书使用了许多排版约定。
代码文本(CodeInText):表示文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、用户输入和Twitter句柄。下面是一个示例:“auto-config还为Telnet和SSH生成了vty访问。”
代码块如下:
# This is a comment
print("hello world")
任何命令行输入或输出如下所示:
$ python
Python 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "c
.....
|
|
|
购买该商品的会员还购买过以下商品 |
|
暂无购买信息!
|
|
|
相似商品 |
|
|
|