精通 Python 網絡編程, 3/e (Mastering Python Networking, 3/e)

Eric Chou 譯者 鄒延濤

買這商品的人也買了...

商品描述

本書首先從Python的基本概述開始,介紹如何與遺留設備以及支持API的網絡設備交互。
了解如何利用高級Pytho和框架來實現網絡自動化任務、
監控、管理和增強的網絡性,然後介紹Azure和AWS云網絡。
最後,使用Jenkins實現持續集成,並使用測試工具驗證網絡。
本書適合希望使用Python和其他工具迎接網絡挑戰的IT專業人員和運維工程師。

作者簡介

Eric Chou

是一位有超過20年從業經驗的資深技術專家。
他在Amazon、Azure和其他財富500強公司工作期間,曾管理業內的一些網絡。
Eric熱衷於網絡自動化、Python以及幫助公司建立更好的狀況。
除了本書外,他還是《
Distributed Denial of Service (DDoS): Practical Detection and Defense》
(O'Reilly Media)的共同作者。
Eric還是美國兩項IP電話專利的主要發明人。
他通過他的書、課程和博客與人們分享他對技術的理解,
並對一些受歡迎的Python開源項目做出了貢獻。

目錄大綱

目錄
序一
序二
前言
第1章TCP/IP協議簇和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自動化框架:Anle基礎106
4.1 Anle:更具聲明性的框架107
4.2一個簡單的Anle示例108
4.2.1控制節點安裝109
4.2.2從源代碼運行不同版本的Anle 110
4.2.3實驗室設置111
4.2.4第一個Anleplaybook 111
4.3 Anle的優點115
4.3.1無代理116
4.3.2冪等性116
4.3.3簡單而且可擴展116
4.3.4網絡供應商支持117
4.4 Anle架構118
4.4.1 YAML 119
4.4.2清單文件120
4.4.3變量121
4.4.4使用Jinja2模板126
4.5 Anle網絡模塊126
4.5.1本地連接和fact 126
4.5.2 provider參數127
4.6 AnleCisco示例129
4.7 Anle2.8playbook示例132
4.8 AnleJuniper示例136
4.9 AnleArista示例137
4.10小結138

第5章Python自動化框架階140
5.1實驗室準備140
5.2 Anle條件141
5.2.1 when子句141
5.2.2 Anle網絡fact 144
5.2. 3網絡模塊條件147
5.3 Anle循環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 AnleVault 163
5.7 Anleinclude和角色165
5.7.1 Anleinclude語句165
5.7.2 Anle角色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用Anle實現訪問列表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測試Anle 468
15.4 pytest與Jenkins集成469
15.5 pyATS和Genie 473
15.6小結477