3dwoo大學簡體電腦書店
Python網絡編程(原書第2版)
( 簡體 字)
作者:[美] 埃里克·周(Eric Chou)著類別:1. -> 程式設計 -> Python
出版社:機械工業出版社Python網絡編程(原書第2版) 3dWoo書號: 51446
詢問書籍請說出此書號!
有庫存
NT售價: 545
出版日:7/1/2019
頁數:312
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 字 )
ISBN:9787111630333 加入購物車加到我的最愛 (請先登入會員)
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社)
譯者序
前言
關于作者
關于審稿人
第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
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 VIRL 25
2.2.2 Cisco DevNet和Cisco dCloud 28
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
9.6 安全223
9.7 其他資源225
9.8 小結226
第10章 AWS云網絡227
10.1 AWS準備工作228
10.2 AWS網絡概述231
10.3 虛擬私有云234
10.3.1 路由表和路由目標238
10.3.2 使用CloudFormation實現自動化239
10.3.3 安全組和網絡ACL242
10.3.4 彈性IP244
10.3.5 NAT網關244
10.4 直連和VPN246
10.4.1 VPN網關246
10.4.2 直連247
10.5 網絡擴展服務247
10.5.1 彈性負載平衡248
10.5.2 Route53 DNS服務248
10.5.3 CloudFront CDN服務249
10.6 其他AWS網絡服務249
10.7 小結249
第11章 Git的使用251
11.1 Git簡介252
11.1.1 Git的好處252
11.1.2 Git術語253
11.1.3 Git和GitHub254
11.2 設置Git254
11.3 Git用法示例255
11.4 在Python中使用Git267
11.4.1 GitPython267
11.4.2 PyGitHub268
11.5 自動配置備份269
11.6 與Git協作271
11.7 小結272
第12章 使用Jenkins持續集成273
12.1 傳統的變更管理流程273
12.2 持續集成簡介274
12.3 安裝Jenkins275
12.4 Jenkins示例277
12.4.1 Python腳本的第一個作業278
12.4.2 Jenkins插件282
12.4.3 網絡持續集成示例284
12.5 使用Python-Jenkins290
12.6 網絡的持續集成292
12.7 小結292
第13章 網絡的測試驅動開發293
13.1 測試驅動開發概述294
13.2 拓撲作為代碼295
13.3 更多關于Python測試的信息301
13.4 編寫網絡測試304
13.4.1 測試可達性304
13.4.2 測試網絡延遲305
13.4.3 測試安全性306
13.4.4 測試事務306
13.4.5 測試網絡配置307
13.4.6 測試Ansible307
13.5 在Jenkins中使用pytest307
13.6 小結311
本書是一本實用的Python網絡編程技術實踐指南,涵蓋計算機網絡管理、網絡安全、自動化運維、Python Web搭建、網絡測試等內容,旨在幫助你掌握Python網絡編程技術,提升網絡管理、運維能力。

本書從使用者的角度出發,首先簡單回顧TCP/IP協議和Python基礎知識,然后探討如何使用Python管理網絡設備,尤其是如何與傳統的路由器和交換機進行通信。之后介紹如何使用Python自動化框架Ansible來實現批量系統配置、批量程序部署、批量運行命令等功能。接著介紹如何采用Python工具實現基礎的網絡安全管理,并介紹如何使用Python進行網絡監控、搭建Web服務,以及其他的網絡運維管理相關技術基礎,如Git代碼倉庫的使用、Jenkins持續集成和網絡的測試驅動開發等。本書涉及許多基礎工具的使用,并配有大量示例代碼,便于你邊學習邊實踐。



基礎設施中的網絡為我們部署、維護和服務應用程序奠定了基礎。Python是一種易學習的高級編程語言,可以有效地激發網絡工程師的創造力并提高他們解決問題的技能。本書將帶你踏上基于Python的網絡管理之旅,幫助你從傳統網絡工程師轉變成為下一代網絡做好準備的網絡開發人員。

本書首先回顧Python的基礎知識,并講解Python怎樣與遺留的和支持API的網絡設備交互。之后,你將學會利用高級Python包和框架來執行自動化、監控、管理和增強其安全性等網絡工程任務。接著,你將使用Jenkins進行持續的網絡集成,并用測試工具來驗證網絡。最后,你將能夠輕松地使用Python執行所有網絡任務。



通過閱讀本書,你將學到:

用Python庫來與網絡交互。

使用Python集成Ansible 2.5來控制Cisco、Juniper和Arista eAPI網絡設備。

利用現有的框架來構建高級API。

學會如何在AWS 云中構建虛擬網絡。

理解如何使用Jenkins自動部署網絡中的變化。

使用PyTest和Unittest進行測試驅動的網絡開發。
正如查爾斯·狄更斯在《雙城記》中寫道:“這是最好的時代,也是最壞的時代;這是智慧的時代,也是愚蠢的時代。”這看似矛盾的話完美地描述了改變和過渡時期的混亂。無疑網絡工程領域正在經歷著類似的快速改變。當軟件開發在網絡各方面更集成化時,傳統的命令行接口和垂直集成的網絡棧方法不再是管理當今網絡的最佳方式。對于網絡工程師來說,這種變化充滿了興奮和機遇,但也充滿挑戰,特別是對于那些需要適應和快速跟上變化的人。本書介紹了如何從傳統平臺發展為基于軟件驅動實踐的平臺,以幫助網絡專業人員適應這一過渡時期。

在本書中,我們選用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章應按順序閱讀。除了本書開頭介紹的基本軟件和硬件工具外,也介紹了與每章相關的新工具。

強烈建議讀者動手實踐本書中的示例。
約定

本書使用了許多排版約定。

代碼文本(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", "copyright", "credits" or "license" for more information.

>>> exit()

粗體:表示一個新的術語或一個重要的詞匯。下面是一個示例:“多年來,DevOps和軟件定義網絡(SDN)運動以及其他因素大大模糊了網絡工程師、系統工程師和開發人員之間的界限。”

這個圖標表示警告或重要說明。

這個圖標表示提示和技巧。
pagetop