新書推薦:
![欧洲雇佣兵研究(1350-1800)](http://103.6.6.66/upload/mall/productImages/24/31/9787100234313.jpg)
《
欧洲雇佣兵研究(1350-1800)
》
售價:HK$
74.8
![费里尼的电影](http://103.6.6.66/upload/mall/productImages/24/30/9787308247566.jpg)
《
费里尼的电影
》
售價:HK$
102.4
![第一性原理:21堂科学通识课(《奇怪的知识增加了》作者马库斯·乔恩全新力作)](http://103.6.6.66/upload/mall/productImages/24/30/9787523605103.jpg)
《
第一性原理:21堂科学通识课(《奇怪的知识增加了》作者马库斯·乔恩全新力作)
》
售價:HK$
90.9
![过渡劳动:平台经济下的外卖骑手(薄荷实验)](http://103.6.6.66/upload/mall/productImages/24/29/9787576047110.jpg)
《
过渡劳动:平台经济下的外卖骑手(薄荷实验)
》
售價:HK$
112.7
![爱的重构:让自己成为家庭幸福掌舵人](http://103.6.6.66/upload/mall/productImages/24/30/9787522530901.jpg)
《
爱的重构:让自己成为家庭幸福掌舵人
》
售價:HK$
112.7
![春雨杏花急急落,车马春山慢慢行(生活是美好的,人是有诗意的。汪曾祺、沈从文、梁实秋等17位名家写给现代人的诗意生活美学之书)](http://103.6.6.66/upload/mall/productImages/24/30/9787513946025.jpg)
《
春雨杏花急急落,车马春山慢慢行(生活是美好的,人是有诗意的。汪曾祺、沈从文、梁实秋等17位名家写给现代人的诗意生活美学之书)
》
售價:HK$
59.8
![暗黑历史书系·巴黎伦敦血色历史(伦敦巴黎双城记,城市社会生活的另类书写)](http://103.6.6.66/upload/mall/productImages/24/31/9787218175300.jpg)
《
暗黑历史书系·巴黎伦敦血色历史(伦敦巴黎双城记,城市社会生活的另类书写)
》
售價:HK$
179.4
![国之重器:如何突破关键技术](http://103.6.6.66/upload/mall/productImages/24/31/9787300328218.jpg)
《
国之重器:如何突破关键技术
》
售價:HK$
79.4
|
編輯推薦: |
基础设施中的网络为如何部署、维护和支持应用奠定了基础。Python是网络工程师探索系统工程师和应用开发人员常用工具的一个理想语言。通过本书,你将踏上一段Python之旅,从传统的网络工程师转变为下一代网络开发人员。
本书经过了全面修订和更新以涵盖Python 3。本书增加了关于使用ELK Stack(Elasticsearch, Logstash, Kibana Beats)完成网络数据分析以及Azure云网络的新章节,除此以外,还包括了使用pyATS和Nornir等新库以及Ansible 2.8的有关更新。每一章都使用*的库来实现示例,以确保兼容性和对概念的理解。
本书首先从Python的基本概述开始,教你如何与遗留设备以及支持API的网络设备交互。你将学习如何利用高级Python包和框架来实现网络自动化任务、并监控、管理和增强的网络安全,然后介绍Azure和AWS云网络。*后,将使用Jenkins实现持续集成,并使用测试工具验证你的网络。
|
內容簡介: |
本书首先从Python的基本概述开始,介绍如何与遗留设备以及支持API的网络设备交互。了解如何利用高级Python包和框架来实现网络自动化任务、监控、管理和增强的网络安全性,然后介绍Azure和AWS云网络。*后,使用Jenkins实现持续集成,并使用测试工具验证网络。
本书适合希望使用Python和其他工具迎接网络挑战的IT专业人员和运维工程师。
|
目錄:
|
目录
序一
序二
前言
第1章 TCPIP协议簇和Python回顾 1
1.1 互联网概述 2
1.1.1 服务器、主机和网络组件 3
1.1.2 数据中心的兴起 3
1.2 OSI模型 6
1.3 客户-服务器模型 8
1.4 网络协议簇 8
1.4.1 传输控制协议 9
1.4.2 用户数据报协议 10
1.4.3 Internet协议 11
1.5 Python语言概述 13
1.5.1 Python版本 14
1.5.2 操作系统 15
1.5.3 运行Python程序 15
1.5.4 Python内置类型 16
1.5.5 Python操作符 22
1.5.6 Python控制流工具 23
1.5.7 Python函数 25
1.5.8 Python类 26
1.5.9 Python模块和包 26
1.6 小结 28
第2章 低层网络设备交互 29
2.1 CLI的挑战 30
2.2 构建虚拟实验室 31
2.2.1 物理设备 31
2.2.2 虚拟设备 31
2.2.3 CiscoVIRL 32
2.2.4 CiscoDevNe和dCloud 36
2.2.5 GNS3 37
2.3 PythonPexpect库 39
2.3.1 Python虚拟环境 39
2.3.2 Pexpect安装 40
2.3.3 Pexpect概述 41
2.3.4 第一个Pexpect程序 46
2.3.5 更多Pexpect特性 47
2.3.6 Pexpect和SSH 48
2.3.7 Pexpect示例集成 49
2.4 PythonParamiko库 51
2.4.1 Paramiko安装 51
2.4.2 Paramiko概述 52
2.4.3 第一个Paramiko程序 55
2.4.4 更多Paramiko特性 56
2.4.5 Paramiko示例集成 57
2.5 Netmiko库 59
2.6 Nornir框架 61
2.7 小结 64
第3章 API和意图驱动网络 65
3.1 基础设施即代码 66
3.1.1 意图驱动网络 66
3.1.2 屏幕抓取与API结构化输出 67
3.1.3 基础设施即代码的数据建模 70
3.1.4 YANG和NETCONF 71
3.2 CiscoAPI和ACI 72
3.2.1 CiscoNX-API 72
3.2.2 CiscoYANG模型 78
3.2.3 CiscoACI和APIC-EM 80
3.3 CiscoMeraki控制器 82
3.4 JuniperNetworks的PythonAPI 84
3.4.1 Juniper和NETCONF 84
3.4.2 面向开发人员的JuniperPyEZ 89
3.5 AristaPythonAPI 93
3.5.1 AristaeAPI管理 94
3.5.2 AristaPyeapi库 98
3.6 VyOS示例 103
3.7 其他库 104
3.8 小结 105
第4章 Python自动化框架:Ansible基础 106
4.1 Ansible:更具声明性的框架 107
4.2 一个简单的Ansible示例 108
4.2.1 控制节点安装 109
4.2.2 从源代码运行不同版本的Ansible 110
4.2.3 实验室设置 111
4.2.4 第一个Ansibleplaybook 111
4.3 Ansible的优点 115
4.3.1 无代理 116
4.3.2 幂等性 116
4.3.3 简单而且可扩展 116
4.3.4 网络供应商支持 117
4.4 Ansible架构 118
4.4.1 YAML 119
4.4.2 清单文件 120
4.4.3 变量 121
4.4.4 使用Jinja2模板 126
4.5 Ansible网络模块 126
4.5.1 本地连接和fact 126
4.5.2 provider参数 127
4.6 AnsibleCisco示例 129
4.7 Ansible2.8playbook示例 132
4.8 AnsibleJuniper示例 136
4.9 AnsibleArista示例 137
4.10 小结 138
第5章 Python自动化框架:进阶 140
5.1 实验室准备 140
5.2 Ansible条件 141
5.2.1 when子句 141
5.2.2 Ansible网络fact 144
5.2.3 网络模块条件 147
5.3 Ansible循环 149
5.3.1 标准循环 149
5.3.2 基于字典的循环 151
5.4 模板 154
5.4.1 Jinja2模板变量 156
5.4.2 Jinja2循环 157
5.4.3 Jinja2条件 157
5.5 组和主机变量 160
5.5.1 组变量 161
5.5.2 主机变量 162
5.6 AnsibleVault 163
5.7 Ansibleinclude和角色 165
5.7.1 Ansibleinclude语句 165
5.7.2 Ansible角色 167
5.8 编写你自己的自定义模块 171
5.8.1 第一个自定义模块 171
5.8.2 第二个自定义模块 174
5.9 小结 175
第6章 使用Python实现网络安全 176
6.1 实验室设置 176
6.2 PythonScapy 180
6.2.1 安装Scapy 181
6.2.2 交互式示例 182
6.2.3 使用Scapy捕获数据包 185
6.2.4 TCP端口扫描 186
6.2.5 ping收集 191
6.2.6 常见攻击 192
6.2.7 Scapy资源 193
6.3 访问列表 193
6.3.1 用Ansible实现访问列表 194
6.3.2 MAC访问列表 197
6.4 syslog搜索 199
6.5 其他工具 202
6.5.1 私有VLAN 202
6.5.2 用Python使用UFW 203
6.6 延伸阅读 204
6.7 小结 204
第7章 使用Python实现网络监控:第1部分 206
7.1 实验室设置 207
7.2 SNMP 207
7.2.1 设置 208
7.2.2 PySNMP 210
7.3 Python实现数据可视化 216
7.3.1 Matplotlib 217
7.3.2 Pygal 223
7.4 Python用于Cacti 227
7.4.1 安装 228
7.4.2 Python脚本作为输入源 229
7.5 小结 232
第8章 使用Python实现网络监控:第2部分 233
8.1 Graphviz 234
8.1.1 实验室设置 234
8.1.2 安装 236
8.1.3 Graphviz示例 236
8.1.4 PythonGraphviz示例 237
8.1.5 LLDP邻居绘图 238
8.2 基于流的监控 248
8.3 ntop流量监控 254
8.3.1 ntop的Python扩展 256
8.3.2 sFlow 260
8.4 小结 265
第9章 使用Python构建网络 Web服务 266
9.1 比较PythonWeb框架 267
9.2 Flask和实验室设置 269
9.3 Flask介绍 270
9.3.1 HTTPie客户 271
9.3.2 URL路由 273
9.3.3 URL变 量 274
9.3.4 URL生成 275
9.3.5 Jsonify返回 277
9.4 网络资源API 278
9.4.1 Flask-SQLAlchemy 278
9.4.2 网络内容API 280
9.4.3 设备API 283
9.4.4 设备IDAPI 286
9.5 网络动态操作 286
9.6 认证和授权 292
9.7 在容器中运行Flask 295
9.8 小结 298
第10章 AWS云网络 300
10.1 AWS设置 301
10.2 AWS网络概述 305
10.3 虚拟私有云 311
10.3.1 路由表和路由目标 315
10.3.2 用CloudFormation实现动画 317
10.3.3 安全组和网络ACL 321
10.3.4 弹性IP 323
10.3.5 NAT网关 325
10.4 DirectConnect和VPN 326
10.4.1 VPN网关 326
10.4.2 DirectConnect 326
10.5 网络伸缩服务 328
10.5.1 弹性负载均衡 328
10.5.2 Route53DNS服务 329
10.5.3 CloudFrontCDN服务 329
10.6 其他AWS网络服务 330
10.7 小结 330
第11章 Azure云网络 332
11.1 Azure和AWS网络服务比较 333
11.2 Azure设置 334
11.3 Azure管理和API 336
11.3.1 Azure服务原则 339
11.3.2 Python与PowerShell 341
11.4 Azure全球基础设施 341
11.5 Azure虚拟网络 343
11.5.1 互联网访问 344
11.5.2 网络资源创建 348
11.5.3 VNet服务端点 349
11.5.4 VNet对等连接 350
11.6 VNet路由 353
11.7 AzureVPN 360
11.8 AzureExpressRoute 363
11.9 Azure网络负载均衡器 364
11.10 其他Azure网络服务 365
11.11 小结 366
第12章 使用ElasticStack完成网络数据分析 367
12.1 ElasticStack是什么? 367
12.2 实验室拓扑 369
12.3 ElasticStack作为服务 373
12.4 第一个端到端示例 375
12.5 Elasticsearch与Python客户端交互 379
12.6 使用Logstash实现数据摄取 381
12.7 使用Beats实现数据摄取 383
12.8 使用Elasticsearch实现搜索 389
12.9 使用Kibana实现数据可视化 394
12.10 小结 398
第13章 使用Git 399
13.1 内容管理问题和Git 399
13.2 Git介绍 400
13.2.1 Git的好处 401
13.2.2 Git术语 402
13.2.3 Git和GitHub 402
13.3 设置Git 403
13.4 Git使用示例 405
13.5 Git分支 410
13.6 使用Python操作Git 420
13.6.1 GitPython 420
13.6.2 PyGitHub 421
13.7 自动化配置备份 423
13.8 使用Git协作 425
13.9 小结 426
第14章 使用Jenkins持续集成 427
14.1 传统变更管理过程 427
14.2 持续集成介绍 429
14.3 安装Jenkins 429
14.4 Jenkins示例 432
14.4.1 执行Python脚本的第一个作业 432
14.4.2 Jenkins插件 437
14.4.3 网络持续集成示例 439
14.5 使用Python操作Jenkins 446
14.6 网络的持续集成 448
14.7 小结 448
第15章 网络测试驱动开发 449
15.1 测试驱动开发概述 449
15.2 拓扑作为代码 451
15.2.1 Python的unittest模块 456
15.2.2 关于Python测试 460
15.2.3 pytest示例 461
15.3 编写网络测试 464
15.3.1 测试可达性 464
15.3.2 测试网络延迟 466
15.3.3 测试安全性 467
15.3.4 测试事务 467
15.3.5 测试网络配置 468
15.3.6 测试Ansible 468
15.4 pytest与Jenkins集成 469
15.5 pyATS和Genie 473
15.6 小结 477
|
內容試閱:
|
前言
正如查尔斯狄更斯在《双城记》中所写:这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚昧的时代。这些看似矛盾的语句完美地描述了变革与转型时期的混乱和情绪。毫无疑问,随着网络工程领域的快速变化,我们正经历着类似的时期。随着软件开发日益集成到网络的各个方面,传统的命令行界面和垂直集成的网络栈方法不再是管理当今网络的最佳方法。对网络工程师来说,我们看到的变化充满了兴奋和机遇,但也充满挑战,尤其是对于那些需要快速适应并跟上变化的人。写这本书的目的是要提供一个实用指南,介绍如何从一个传统平台发展为基于软件驱动实践构建的平台,帮助网络专业人员更轻松地适应这种转型。
在这本书中,我们选择使用Python作为掌握和处理网络工程任务的编程语言。Python是一个易于学习的高级编程语言,可以有效地激发网络工程师的创造力,并提供他们解决问题的能力,以优化日常操作。Python正在成为很多大型网络不可少的组成部分,我希望能够通过这本书与你分享我的一些经验教训。
自这本书第1版和第2版出版以来,我与本书的很多读者进行了有趣而有意义的对话。
前两版的成功让我受宠若惊,并把收到的反馈铭记于心。在第3版中,我努力加入了很多更新的库,使用最新的软件和更新的硬件平台来更新现有的例子,另外还增加了我认为对当今网络工程师很重要的两章。
变革的时代为技术进步提供了巨大机遇。这本书中的概念和工具对我的职业生涯有很大帮助,希望对你也能有同样的帮助。
本书面向对象
这本书非常适合IT专业人员和运维工程师,他们已经在管理网络设备组,希望扩展他们的知识使用Python和其他工具来迎接网络挑战。学习这本书建议具备基本的网络和Python知识。
本书内容
第1章 TCPIP协议簇和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.comsupport并注册,我们将直接通过email为你提供这些文件。
可以按照以下步骤下载代码文件:
1登录或注册www.packtpub.com。
2选择Support标签页。
3点击CodeDownloads& Errata。
4在Search框中输入书名,并按照屏幕上的说明下载。
一旦下载了文件,确保使用以下最新版本的解压缩软件解压缩文件夹:
WinRAR7-Zip Windows。
ZipegiZipUnRarX Mac。
7-ZipPeaZip Linux。
我们还在GitHub上托管了本书的代码包https:github.comPacktPublishingMastering-Python-Networking-Third-Edition。如果代码有更新,会在GitHub存储库上更新。另外,https:github.comPacktPublishing上提供了我们的大量图书和视频的其他代码包。看看有什么!
彩色图片下载
我们还提供了一个PDF文件,其中包含这本书中使用的截图图表的彩色图片。可以从这里下载:https:static.packt-cdn.comdownloads9781839214677_ColorImages.pdf。
排版约定
这本书使用了以下排版约定。
正文中的代码CodeInText:指示正文中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL、用户输入和推特句柄。例如:" auto-config还会为telnet和SSH生成vty访问"。
代码块格式如下:
#Thisisacomment
print"helloworld"
命令行输入或输出格式如下:
$Python
Python3.6.8default,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.comsubmit-errata,
选择这本书,点击ErrataSubmissionForm 勘误提交表链接,并填入详细信息。
非法复制:如果你看到我们的作品在互联网上有任何形式的非法拷贝,希望能向我们提供地址或网站名,我们将不胜感谢。请联系copyright@packtpub.com并提供相应链接。
如果你有兴趣成为一名作者:如果你在某个领域很有经验,而且有兴趣写书或者希望做些贡献,请访问http:authors.packtpub.com。
评论
请留言评论。阅读并使用了这本书之后,你可以在购买这本书的网站上留言评论,这样潜在读者就能看到你的公正观点,并以此决定是否购买这本书。作为出版商,Packt能从中了解你对我们的书有什么想法,另外作者也能看到对他们的作品的反馈。非常感谢!
关于Packt的更多信息,请访问packtpub.com。
|
|