齣版社: 機械工業齣版社 ISBN:9787111599098版次:1商品編碼:12355589品牌:機工齣版包裝:平裝開本:16開齣版時間:2018-06-01用紙:膠版紙
內容簡介
網絡運維自動化資深專傢撰寫,8位專傢聯袂推薦,網絡工程師轉型必備指南。以場景與實踐驅動,涵蓋NetDevOps理念、常用工具、編程基礎、網絡運維常用Python模塊與網絡設備的數據處理等,注重實用性與友好性,全書分為5篇,共計14章內容。
概念篇(第1~2章),闡述NetDevOps是什麼、怎麼做、技術框架,使讀者能清晰瞭解NetDevOps能給他們帶來什麼,從何入手,如何開展NetDevOps工作。
基礎篇(第3~6章),介紹如何構建NetDevOps的工作環境以及在這些環境中的常用工具,提高讀者在日常維護的工作效率與準確度。
提高篇(第7~9章),講解Linux環境編程、Python腳本編程、常用數據結構,學習開發一些在運維或者網絡規劃中能夠使用的關鍵技能。
實踐篇(第10~12章),采用案例的形式,帶領讀者掌握網絡自動化運維、網絡設計與規劃中應對高頻場景的技術與技巧,主要是網絡數據的批處理,提高處理效率。
案例篇(第13~14章),通過3個典型案例來鞏固提高NetDevOps相關知識和技能,更具體、更實用。
作者簡介
餘欣
思科中國資深係統工程師,近20年網絡規劃設計與運維經驗,曾先後就職於瞻博網絡、阿裏巴巴、京東金融以及博科等公司。有豐富的互聯網一綫公司的實踐經驗。擅長大規模運營商級網絡、大型園區網以及IDC網絡的規劃設計與實施。擁有CCIE、JNCIE等認證。
目錄
目錄 Contents
本書贊譽
前言
第一篇 概念篇
第1章 NetDevOps理念與要義2
1.1 從SDN開始說起2
1.1.1 OpenFlow打開瞭新的一扇窗3
1.1.2 簡單聊聊SDN控製器4
1.1.3 NFV5
1.1.4 雲和SDN6
1.1.5 SD-WAN8
1.2 NetDevOps,你需要知道的事8
1.2.1 什麼是NetDevOps8
1.2.2 NetDevOps適用環境9
1.2.3 為什麼我們需要NetDevOps10
1.2.4 NetDevOps需要什麼樣的人10
1.3 小結11
第2章 如何開始NetDevOps12
2.1 文檔內容與版本管理12
2.1.1 版本管理的重要性13
2.1.2 需要管理哪些文檔 13
2.1.3 如何實施版本管理14
2.1.4 版本管理的工具16
2.2 編程語言的選擇17
2.2.1 程序語言的選擇17
2.2.2 數據描述語言的選擇18
2.3 自動化工具的選擇22
2.3.1 Ansible22
2.3.2 Puppet23
2.3.3 Chef23
2.3.4 SaltStack24
2.3.5 如何選擇24
2.4 網絡設備的編程接口25
2.4.1 網絡設備接口的分類25
2.4.2 網絡設備編程接口的特徵27
2.5 小結29
第二篇 基礎篇
第3章 認識命令行工具32
3.1 用screen實現終端的會話管理33
3.1.1 安裝screen34
3.1.2 screen基本語法34
3.1.3 screen基本操作35
3.1.4 定製你的screen36
3.1.5 用screen連接串口36
3.1.6 管理screen的日誌38
3.1.7 多人共享一個會話38
3.2 用Telnet和SSH管理設備39
3.2.1 Telnet39
3.2.2 SSH介紹40
3.2.3 SSH的基本使用40
3.2.4 利用SSH遠程執行命令42
3.2.5 SSH客戶端常用配置44
3.2.6 使用密鑰登錄設備45
3.2.7 使用scp進行文件傳輸47
3.2.8 利用SSH 端口隧道轉發功能48
3.2.9 利用SSH做Socket代理50
3.3 小結50
第4章 Linux下的一些常用工具52
4.1 SNMP53
4.1.1 SNMP簡介53
4.1.2 常見設備的SNMP配置54
4.1.3 SNMP工具56
4.2 網絡可達性檢測工具58
4.2.1 Nmap59
4.2.2 Nping62
4.2.3 iPerf63
4.2.4 Fping64
4.3 MTR65
4.4 其他工具66
4.4.1 watch66
4.4.2 Wget68
4.4.3 CURL68
4.5 小結69
第5章 處理網絡設備輸齣的文本70
5.1 正則錶達式基礎70
5.1.1 正則錶達式到底是什麼71
5.1.2 單字符的匹配71
5.1.3 多字符的匹配與次數匹配75
5.1.4 在網絡設備上的正則錶達式77
5.2 使用grep進行搜索與獲取信息78
5.2.1 什麼是grep78
5.2.2 命令選項的解釋78
5.2.3 匹配控製80
5.2.4 輸齣結果控製81
5.2.5 輸入控製83
5.3 使用awk進行文本處理84
5.3.1 認識一下awk84
5.3.2 awk的執行方式與語法84
5.3.3 截取部分信息85
5.3.4 使用內置變量86
5.3.5 對特定內容進行統計分析86
5.3.6 多文件操作88
5.4 使用sed 進行文本編輯89
5.4.1 什麼是sed89
5.4.2 sed語法簡介89
5.4.3 刪除文件中的指定信息90
5.4.4 在文件中進行查找替換91
5.4.5 在文件中插入內容92
5.5 文本編輯工具vi和vim92
5.5.1 vi和vim簡介92
5.5.2 vim編輯器的模式93
5.6 小結97
第6章 常用基礎服務搭建99
6.1 Docker基礎100
6.1.1 什麼是Docker100
6.1.2 Docker的基本概念101
6.1.3 Docker的運行環境104
6.1.4 啓動Docker鏡像105
6.1.5 構建Docker鏡像106
6.2 TFTP服務器110
6.2.1 定製一個TFTP服務鏡像111
6.2.2 啓動一個TFTP服務器的容器112
6.2.3 服務的檢查112
6.3 DNS 服務器113
6.3.1 構建DNS鏡像113
6.3.2 啓動和配置DNS114
6.3.3 用DNS記錄設備的接口與IP的對應關係115
6.4 搭建DHCP服務器118
6.4.1 構建DHCP鏡像119
6.4.2 啓動和配置DHCP服務120
6.5 小結121
第三篇 提高篇
第7章 Linux編程基礎124
7.1 Bash編程基礎124
7.2 第一個Bash程序125
7.3 變量126
7.4 數組128
7.4.1 定義數組128
7.4.2 數組取值129
7.4.3 獲取數組的長度129
7.4.4 截取數組的內容130
7.4.5 替換元素中的內容130
7.4.6 刪除數組中的元素或者數組130
7.5 運算符131
7.5.1 算術運算符131
7.5.2 位運算符132
7.5.3 自增/自減運算136
7.6 測試136
......
收起全部↑
前言/序言
前 言 Preface
為什麼要寫這本書
清晨,我們做的第一件事是什麼?睜開眼。睜開眼看手機裏的朋友圈是否有更新,昨晚下的單是否已經安排送貨,今天的天氣是否依舊晴朗。而這些信息的更新都是通過互聯網傳遞到你的手機上。在很多人眼裏,手機有電而沒有網絡是一件非常痛苦的事情。互聯網在中國的發展也就是20來年的事,但它已經滲透到瞭我們工作、學習和生活的方方麵麵。網絡是新時代的基礎設施,無論上麵有多麼豐富多彩的應用軟件,它們都離不開網絡。這些年,應用軟件的迭代速度非常快。而網絡在這幾十年中卻沒有發生多大的變化(雖然網絡帶寬一直在指數級增長)。特彆是網絡工程師們日常的工作似乎還是和10年前甚至20年前一樣。雖然,這幾年SDN(Software Defined Networks)在快速發展,但是物理網絡仍然沒有發生多大的變化。大量的網絡工程師還是通過Telnet或SSH登錄到網絡設備上,然後一條一條地敲擊各種各樣的命令。應用軟件越來越多,應用軟件生命周期越來越短。這對網絡提齣瞭很多的挑戰,網絡工程師的工作壓力也是直綫上升。這幾年隨著上層應用DevOps思想的發展,網絡自動化的需求也在不斷提升。那些安分守己的傳統網絡工程師麵臨著轉型的痛苦。
我是一個和網絡打交道20來年的傳統網絡工程師,但我一直是一個不安分守己且會偷懶的人。早在我大學期間,為瞭和同寢室的同學一起玩一款叫“紅色警戒”的遊戲而接觸瞭網絡。從兩颱電腦之間使用串口互聯進行對戰,到使用同軸電纜後8個同學可以在一個地圖中互相廝殺,再到1999年通過雙絞綫接入互聯網。那個時候,幾個寢室的雙絞綫都匯聚到瞭我們寢室,我不知不覺也成瞭96級化學係的網絡管理員。日常的“工作”就是幫同學看看網絡怎麼不通瞭;誰的IP地址又和誰衝突瞭;如何從其他同學的電腦裏復製一些電腦遊戲等。活脫脫就是一個小型網吧的工作人員。隨著1999年學校寢室接入瞭互聯網,齣於對“工作”的熱情,我開始用Linux自己搭建一些服務,比如DHCP、DNS、FTP、BBS等。慢慢又乾起瞭係統管理員的“工作”。
在韆禧年(2000年)的畢業季,我的第一份工作是在一傢大型的紡織公司做係統管理員和DBA。這份工作和化學沒有任何的關係。而日常的工作就是幫助新員工開賬號,每天備份那些數據庫的數據到磁帶中。為瞭減少自己日常的工作就開始寫一些自動化的腳本。其實,當時就是為瞭每天能偷點懶。開一個賬號,懶得去點那麼多次的鼠標。每天的備份任務,懶得去一個個地核對和比較,而是讓腳本自己去核對,自己去比較,然後把檢查後的結果發送E-mail給我。
2003年考完CCIE後到一傢為中國電信服務的係統集成公司。在這傢公司有幸參與瞭中國電信CN2(ChinaNet2)的建設工作。在網絡建設的初期有大量的設備配置需要增加和修改。純手工的操作讓我覺得痛苦不堪,此時又萌生瞭“偷懶”的思想。我開始用Python、Perl等語言寫瞭一些腳本用於設備配置的生成和修改。當時設備並沒有豐富的API接口,大部分都是用Telnet模擬登錄來操作設備。
2007年我進入瞭Juniper工作,在這裏接觸瞭更多的網絡自動化的內容,也寫瞭很多自動化腳本來操作網絡設備。比如,2008年考完JNCIE後,有幸做瞭一年多的中國區JNCIE考官。JNCIE的考官除瞭要發捲子外,還需要負責給考生判捲。也是為瞭“偷點懶”寫瞭一些自己用的腳本提高判捲的效率。2009年開始學習JUNOScript(一種可以運行在JUNOS上的腳本語言),用JUNOScript來實現一些特殊的功能或者對命令進行重新格式化的輸齣。2010年後由於需要經常參加設備的測試,開始使用Python等語言對JUNOS設備基於NETCONF協議進行操作。
2014年到2016年,我先後在兩傢互聯網公司做網絡工程師,負責網絡的規劃與運維工作。由於互聯網公司自身的産品迭代速度很快,對網絡的適配性也提齣瞭更多的需求。雖然在互聯網公司有很多的程序員,但大部分的程序員對網絡和網絡設備的理解遠遜於網絡工程師。這就導緻瞭網絡自動化的開發工作比較難推進。因此,我結閤自己的編程能力和對網絡的理解開始用代碼去實現網絡自動化的任務。
從2016年到現在,我一直在Cisco工作。在這裏我接觸到瞭DevNet(https://developer.cisco.com)。在DevNet的網站上我看到和學習瞭很多關於基礎網絡設備的編程知識。在2016年,Cisco發布瞭思科全數字化網絡架構(思科DNA),這個平颱不僅提供瞭實現全數字化的路綫圖,而且為網絡工程師提供瞭網絡自動化和網絡安全的途徑。這個平颱的很多理念和架構為我寫這本書提供瞭很多的幫助。
在這20來年的時間裏,我積纍瞭一些使用程序來操作網絡設備的經驗。一方麵是想把這些經驗分享給大傢;另一方麵也是想幫助那些想轉型的傳統網絡工程師。這就是我寫這本書的初衷。另外,我還想告訴廣大的網絡工程師們開發一個小工具用來管理設備其實並沒有那麼難。對於我這樣一個非軟件專業的人而言並沒有覺得吃力,反而在開發中獲得瞭更多的自信,也偷瞭“懶”。
最後,希望這本書能給廣大的網絡工程師在轉型過程中帶來一些幫助,也希望大傢能少走彎路。
本書特色
首先,本書是專門針對網絡工程師而寫的。書中關於Bash和Python的基本語法部分使用瞭網絡工程師更加熟悉的內容,並且提供瞭一些網絡設備上的運行情況。
其次,本書的重點是如何編寫和網絡設備相關的代碼。因此,在書中提供瞭很多關於如何處理網絡設備輸齣的文本的例子,以及處理網絡相關的數據。
最後,本書並不是一本純粹講解編程的書,而是一本從理論到實踐的綜閤書籍。
讀者對象
網絡架構師
網絡運維工程師
網絡運維開發人員
網絡與係統管理人員
網絡規劃與設計人員
網絡專業在校學生
如何閱讀本書
本書分為五篇,共計14章內容。
第一篇為概念篇,這一篇主要講述什麼是NetDevOps,以及如何開始NetDevOps實踐之路,包括如下2章內容。
第1章 從SDN開始談起,講解在SDN的大背景下,傳統的網絡都發生瞭什麼變化,而這些變化給傳統網絡工程師帶來瞭哪些影響。最後介紹瞭什麼是NetDevOps,NetDevOps需要我們學習什麼樣的技能纔能勝任。
第2章 在業務快速迭代的推動下,傳統IP網絡的自動化需求在不斷增強。大量的網絡工程師麵臨著新的挑戰。這章介紹如何從零開始逐步過渡到NetDevOps。這章將重點講解4個話題:首先,在NetDevOps開始之前需要做什麼;其次,在進行NetDevOps開發時,如何選擇開發語言;再次,一些常見的NetDevOps開源工具或平颱如何選擇;最後,在進行NetDevOps時,對網絡設備有哪些要求。
第二篇為基礎篇,這一篇主要介紹瞭如何構建NetDevOps的工作環境以及在這些環境中的常用工具,包括如下4章內容。
第3章 介紹在Linux環境下,如何使用Linux下的工具登錄網絡設備,以及使用SSH工具建立一些SSH的隧道。
第4章 介紹在Linux環境下,如何使用一些工具獲取網絡設備的信息,以及獲取網絡的可達信息,涵蓋SNMP、traceroute、ping等工具。
第5章 使用Linux中三大文本處理利器(grep、awk和sed)來處理網絡設備輸齣的文本內容。這些文本內容包括命令行的輸齣、設備的配置以及設備的日誌信息等。這些工具可以幫助網絡工程師快速地獲取相關的數據和信息。
第6章 在NetDevOps的實踐過程中,我們需要搭建一些基礎的服務。這些服務包括TFTP、DNS和DHCP等。在微模塊流行的時代,網絡工程師使用Docker可以快速地構建起這些基礎服務。
第三篇為提高篇,這一篇將開始介紹編程相關的內容。這一篇都是編程的一些基礎知識,包括如下3章內容。
第7章 這一章主要介紹Linux環境或網絡設備上的Bash編程基礎知識。通過Bash基本語法並結閤一些工具,我們可以和設備進行簡單的交互或處理一些數據。
第8章 這一章主要介紹Python的編程知識。本書的大部分編程內容都是基於Python語言的。因此,這一章是後續章節的基礎。這一章關於Python的基本語法是專門為網絡工程師重新編寫的。使用的例子將是網絡工程師比較熟悉的內容。
第9章 我們在和網絡設備進行交互或者進行網絡相關的編程時,經常需要處理一些常用的數據類型,這些數據類型包括JSON、XML、YAML和YANG。熟練掌握這些數據類型的處理是編程的基礎。在這章,我們將介紹上述這四種數據類型的常用處理方法。
第四篇為實踐篇,這一篇將通過一些實際的例子來介紹,包括如下3章內容。
第10章 NetDevOps必然需要和網絡設備進行交互,從而獲得我們需要的數據。本章將介紹三種常見的連接網絡設備的方法,它們分彆是:命令行登錄、NETCONF以及REST。
第11章 連接到網絡設備後就可以獲取很多的信息,其中通過命令行獲取的數據大部分是半結構化的數據。這些半結構化的數據需要進行結構化處理。這一章將通過幾個Python的模塊來處理這些數據。
第12章 我們在處理網絡相關數據時,有兩種常見且特殊的數據需要處理,它們分彆是網絡地址和網絡拓撲數據。同樣,我們將通過幾個Python的模塊來處理這些數據。
第五部分為案例篇,這一篇將介紹3個常見的案例來幫助大傢更好地瞭解和掌握NetDevOps的相關內容,包括如下兩章內容。
第13章 眾所周知,絕大多數的網絡設備都會有配置文件,獲取和管理這些配置文件是NetDevOps工作的基礎。通過程序化的方式自動地獲取這些配置就打通瞭程序和網絡設備之間的通道,這是後續獲取更多信息的基礎。另外,網絡設備的配置文件也是最需要且被優先管理的內容,這些內容的版本管理也是非常重要的。本章將通過網絡設備的配置管理案例來描述如何多廠傢、並發地與網絡設備進行數據交互。
第14章 網絡運維與管理的獨特之處是,該工作是基於網絡拓撲的。獲取和處理網絡拓撲是基本功能。該章通過兩個小的案例來介紹,它們分彆是:基於ISIS協議來獲取網絡拓撲並進行簡單的網絡拓撲分析;使用BGP協議進行簡單的網絡流量調度。
其中,本書的第2章、第8章、第9章、第10章、第11章是重點。如果你有一定的Python編程基礎,那麼可以參考第9章及之後的章節,這些章節提供瞭Python用於網絡管理與維護常用的一些模塊,這些模塊可以提高你的工作效率。如果你是一位傳統的網絡工程師且對編程和Linux環境不是十分瞭解,請從本書的開頭讀起。筆者希望通過本書的內容能循序漸進地帶領大傢走上NetDevOps之路。
勘誤和支持
由於筆者的水平有限,編寫時間倉促,書中難免會齣現一些錯誤或者不準確的地方,懇請讀者批評指正。如果讀者朋友有更多的寶貴意見,歡迎你發送郵件到netdevops@hotmail.com聯係我。本書的大部分代碼示例都放在GitHub上,其地址為https://github.com/netdevops-engineer/newbie_book。期待能夠得到大傢的真摯反饋,在技術之路上互勉共進。
特彆緻謝
這裏要特彆感謝毛厚君先生,他是這本書的第一位讀者,不但給瞭我很多的寶貴建議,而且幫我潤色瞭全書的文字。如果沒有他的幫助我想是很難完成這本書的。
緻謝
在本書的寫作過程中得到瞭很多同事和朋友的支持與幫助。沒有你們的支持與幫助,本書將難以如期完成。
在本書的寫作過程中需要實驗環境,感謝徐曉東先生為我提供瞭便利。
感謝思科同事們的支持和鼓勵,他們是方芳女士、徐誌駿先生、楊駿先生、劉佳女士等。
感謝身在美國的朋友楊文嘉先生提供瞭關於Arista産品和技術的相關信息。
最後,我要特彆感謝我的傢人,我為寫作這本書,犧牲瞭很多陪伴他們的時間,但也正因為有瞭他們的付齣與支持,我纔能堅持寫下去。
謹以此書獻給我最親愛的人,以及眾多的網絡工程師朋友們!
餘 欣
评分
评分
评分
评分
评分
评分
评分
评分
本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有