內容介紹 | |
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787519849900 作者:[美]埃裡克·周 出版社:中國電力出版社 出版時間:2021年01月 
" 編輯推薦 基礎設施中的網絡為如何部署、維護和支持應用奠定了基礎。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章 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章 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 前言 前言 正如查爾斯·狄更斯在《雙城記》中所寫:“這是好的時代,這是壞的時代;這是智慧的時代,這是愚昧的時代”。這些看似矛盾的語句完美地描述了變革與轉型時期的混亂和情緒。毫無疑問,隨著網絡工程領域的快速變化,我們正經歷著類似的時期。隨著軟件開發日益集成到網絡的各個方面,傳統的命令行界面和垂直集成的網絡棧方法不再是管理當今網絡的方法。對網絡工程師來說,我們看到的變化充滿了興奮和機遇,但也充滿挑戰,尤其是對於那些需要快速適應並跟上變化的人。寫這本書的目的是要提供一個實用指南,介紹如何從一個傳統平臺發展為基於軟件驅動實踐構建的平臺,幫助網絡專業人員更輕松地適應這種轉型。 在這本書中,我們選擇使用Python作為掌握和處理網絡工程任務的編程語言。Python是一個易於學習的高級編程語言,可以有效地激發網絡工程師的創造力,並提供他們解決問題的能力,以優化日常操作。Python正在成為很多大型網絡不可少的組成部分,我希望能夠通過這本書與你分享我的一些經驗教訓。 自這本書第1版和第2版出版以來,我與本書的很多讀者進行了有趣而有意義的對話。前言 正如查爾斯·狄更斯在《雙城記》中所寫:“這是好的時代,這是壞的時代;這是智慧的時代,這是愚昧的時代”。這些看似矛盾的語句完美地描述了變革與轉型時期的混亂和情緒。毫無疑問,隨著網絡工程領域的快速變化,我們正經歷著類似的時期。隨著軟件開發日益集成到網絡的各個方面,傳統的命令行界面和垂直集成的網絡棧方法不再是管理當今網絡的方法。對網絡工程師來說,我們看到的變化充滿了興奮和機遇,但也充滿挑戰,尤其是對於那些需要快速適應並跟上變化的人。寫這本書的目的是要提供一個實用指南,介紹如何從一個傳統平臺發展為基於軟件驅動實踐構建的平臺,幫助網絡專業人員更輕松地適應這種轉型。 在這本書中,我們選擇使用Python作為掌握和處理網絡工程任務的編程語言。Python是一個易於學習的高級編程語言,可以有效地激發網絡工程師的創造力,並提供他們解決問題的能力,以優化日常操作。Python正在成為很多大型網絡不可少的組成部分,我希望能夠通過這本書與你分享我的一些經驗教訓。 自這本書第1版和第2版出版以來,我與本書的很多讀者進行了有趣而有意義的對話。 前兩版的成功讓我受寵若驚,並把收到的反饋銘記於心。在第3版中,我努力加入了很多更新的庫,使用的軟件和更新的硬件平臺來更新現有的例子,另外還增加了我認為對當今網絡工程師很重要的兩章。 變革的時代為技術進步提供了巨大機遇。這本書中的概念和工具對我的職業生涯有很大幫助,希望對你也能有同樣的幫助。 本書面向對像 這本書非常適合IT專業人員和運維工程師,他們已經在管理網絡設備組,希望擴展他們的知識使用Python和其他工具來迎接網絡挑戰。學習這本書建議具備基本的網絡和Python知識。 本書內容 第1章 TCP/IP協議簇和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.com/support並注冊,我們將直接通過email為你提供這些文件。 可以按照以下步驟下載代碼文件: (1)登錄或注冊www.packtpub.com。 (2)選擇Support標簽頁。 (3)點擊CodeDownloads& Errata。 (4)在Search框中輸入書名,並按照屏幕上的說明下載。 一旦下載了文件,確保使用以下版本的解壓縮軟件解壓縮文件夾: • WinRAR/7-Zip (Windows)。 •Zipeg/iZip/UnRarX (Mac)。 •7-Zip/PeaZip (Linux)。 我們還在GitHub上托管了本書的代碼包(https://github.com/PacktPublishing/Mastering-Python-Networking-Third-Edition)。如果代碼有更新,會在GitHub存儲庫上更新。另外,https://github.com/PacktPublishing/上提供了我們的大量圖書和視頻的其他代碼包。看看有什麼! 彩色圖片下載 我們還提供了一個PDF文件,其中包含這本書中使用的截圖/圖表的彩色圖片。可以從這裡下載:https://static.packt-cdn.com/downloads/9781839214677_ColorImages.pdf。 排版約定 這本書使用了以下排版約定。 正文中的代碼(CodeInText):指示正文中的代碼、數據庫表名、文件夾名、文件名、文件擴展名、路徑名、虛擬URL、用戶輸入和推特句柄。例如:" auto-config還會為telnet和SSH生成vty訪問"。 代碼塊格式如下: #Thisisacomment print("helloworld") 命令行輸入或輸出格式如下: $Python Python3.6.8(default,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.com/submit-errata, 選擇這本書,點擊ErrataSubmissionForm (勘誤提交表)鏈接,並填入詳細信息。 非法復制:如果你看到我們的作品在互聯網上有任何形式的非法拷貝,希望能向我們提供地址或網站名,我們將不勝感謝。請聯繫copyright@packtpub.com並提供相應鏈接。 如果你有興趣成為一名作者:如果你在某個領域很有經驗,而且有興趣寫書或者希望做些貢獻,請訪問http://authors.packtpub.com。 評論 請留言評論。閱讀並使用了這本書之後,你可以在購買這本書的網站上留言評論,這樣潛在讀者就能看到你的公正觀點,並以此決定是否購買這本書。作為出版商,Packt能從中了解你對我們的書有什麼想法,另外作者也能看到對他們的作品的反饋。非常感謝! 關於Packt的更多信息,請訪問packtpub.com。 | | |