《精通Python網路編程(第三版)》是2021年中國電力出版社出版的圖書。
基本介紹
- 中文名:精通Python網路編程(第三版)
- 出版時間:2021年1月1日
- 出版社:中國電力出版社
- ISBN:9787519849900
內容簡介,圖書目錄,
內容簡介
本書首先從Python的基本概述開始,介紹如何與遺留設備以及支持API的網路設備互動。了解如何利用高級Python包和框架來實現網路自動化任務、監控、管理和增強的網路安全性,然後介紹Azure和AWS雲網路。最後,使用Jenkins實現持續集成,並使用測試工具驗證網路。
本書適合希望使用Python和其他工具迎接網路挑戰的IT專業人員和運維工程師。
圖書目錄
序一
序二
前言
第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自動化框架: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