《網路工程師的Python之路:網路運維自動化實戰》是2020年11月電子工業出版社出版的圖書,作者為王印。
本書全部內容均為網路工程師量體裁衣,由淺入深地講解網路運維和Python的完美結合。本書有4大基礎知識點,7大進階知識點,助力傳統網工輕鬆轉型;4個GNS3模擬器實驗,3個真機實驗,實用性強,講解細緻;6大Python第三方網路運維相關模組,舉例介紹更多實用工具。手把手教學,讓網路運維自動化道路更順暢。
內容簡介,圖書目錄,作者簡介,
內容簡介
眾所周知,Python這門編程語駝宙淚言的套用場景十分廣泛,人工智慧、數據分析、爬蟲、Web開發、遊戲製作等領域都能看到Python的身影,隨著近幾年Python的大熱,和上述Python套用場景相關的書籍、視頻、網站等教學資源隨處可見,而市面上Python的基礎入門教程更是多如牛毛。遺憾的是,在如此豐坑阿富的Python教學資源中,為網路工程師量身打造的計算機網路運維方面的教學書籍卻相當匱乏。
《網路工程師的Python之路:網路運維自動化實戰》內容基於思科設備和技術,從網路工程師的角度出發,以截稿前的Python 3.8為主,從Python的安裝到基礎和進階知識,再到Python在網路運維中的實戰套用和網路工程師必須掌握的Python第三方模組,所有內容均為網路工程師量體裁衣,讓完全零基礎的網路工程師能夠快速上手並掌握Python這門程式語言,將網路運維自動化技術運用在日常工作中,在提高工作效率的同時,提升職場競爭力。
本書所有內容均由作者精選,只講解對網路工程師有用的Python知識,讓讀者在網路運維自動化技術學習的道路上少走一些彎路。
圖書目錄
第1章 Python的安裝和使用 1
1.1 安裝Python 1
1.1.1 在Windows下安裝贈套達Python 3.8.2 2
1.1.2 在Linux下安裝Python 3.8.2 5
1.2 在Windows下使用Python 3.8.2 8
1.2.1 互動模式 8
1.2.2 腳本模式 10
1.2.3 運行Python腳本 14
1.3 在Linux下使用Python 3.8.2 18
1.3.1 互動模式 19
1.3.2 腳本模式 19
1.3.3 運行Python腳本 22
1.3.4 Shebang符號 22
第2章 Python基本語法 24
2.1 變數 24
2.2 注釋 27
2.3 方法和函式 28
2.4 數據類型 30
2.4.1 字元串 30
2.4.2 整數和浮點數 41
2.4.3 列表 45
2.4.4 字典 50
2.4.5 布爾類型 55
2.4.6 集合、元組、空值 57
第3章 Python進階語法 62
3.1 條件(判斷)語句 62
3.1.1 通過比較運算符做判斷 63
3.1.2 通過字元串方法+邏輯運算符做判斷 64
3.1.3 通過成員運算符做判斷 67
3.2 循環語句 69
3.2.1 while語句 69
3.2.2 for語句 72
3.3 文本檔案的讀/寫 75
3.3.1 open()函式及其模式 75
3.3.2 檔案讀取 76
3.3.3 檔案寫入 84
3.3.4 with語句 88
3.4 自定義函式 89
3.4.1 函式的創建和調用 90
3.4.2 函式值的返回 91
3.4.3 嵌套函式 93
3.5 模照紙棵記塊 93
3.5.1 不帶臘料駝乘自定義函式的模組 94
3.5.2 帶自定義函式的模組 95
3.5.3 Python內建模組和第三方模組 95
3.5.4 from ... import ... 99
3.5.5 if __name__ == '__main__': 99
3.6 正則表達式 100
3.6.1 什麼是正則表達式 101
3.6.2 正則表達式的驗證 102
3.6.3 正則表達式的規則只愉槳 103
3.6.4 正則表達式在Python中糊疊炒的套用 110
3.7 異常處理 116
第4章 Python網路運維實驗(GNS3模擬器) 122
4.1 實驗運行環境 122
4.2 Python中的Telnet和SSH模組 124
4.2.1 Telnetlib 124
4.2.2 Paramiko和Netmiko 131
4.3 實驗1 input()函式和getpass模組 143
4.3.1 實驗目的 143
4.3.2 實驗準備 143
4.3.3 實驗代碼 145
4.3.4 代碼分段講解 146
4.3.5 驗證 148
4.4 實驗2 批量登錄不同網段的交換機 152
4.4.1 實驗目的 152
4.4.2 實驗準備 153
4.4.3 實驗代碼 154
4.4.4 代碼分段講解 155
4.4.5 驗證 156
4.5 實驗3 異常處理的套用 157
4.5.1 實驗目的 159
4.5.2 實驗準備 159
4.5.3 實驗代碼 160
4.5.4 代碼分段講解 162
4.5.5 驗證 164
4.6 實驗4 Python實現網路設備的配置備份 166
4.6.1 實驗目的 166
4.6.2 實驗準備 166
4.6.3 實驗代碼 170
4.6.4 代碼分段講解 171
4.6.5 驗證 173
第5章 Python網路運維實戰(真機) 176
5.1 實驗1 大規模批量修改交換機QoS的配置 176
5.1.1 實驗背景 178
5.1.2 實驗目的 178
5.1.3 實驗準備 178
5.1.4 實驗代碼 180
5.1.5 代碼分段講解 181
5.1.6 驗證 182
5.2 實驗2 pythonping的使用方法 185
5.2.1 實驗背景 187
5.2.2 實驗目的 187
5.2.3 實驗思路 187
5.2.4 實驗準備 - 腳本1 188
5.2.5 實驗代碼 - 腳本1 189
5.2.6 腳本1代碼分段講解 190
5.2.7 腳本1驗證 192
5.2.8 實驗準備 - 腳本2 193
5.2.9 實驗代碼 - 腳本2 194
5.2.10 腳本2代碼分段講解 196
5.2.11 腳本2驗證 200
5.3 實驗3 利用Python腳本檢查交換機的配置 201
5.3.1 實驗背景 201
5.3.2 實驗目的 202
5.3.3 實驗思路 202
5.3.4 實驗準備 - 腳本1 203
5.3.5 實驗代碼 - 腳本1 204
5.3.6 腳本1代碼分段講解 206
5.3.7 腳本1驗證 211
5.3.8 實驗準備 - 腳本2 212
5.3.9 實驗代碼 - 腳本2 213
5.3.10 腳本2代碼分段講解 215
5.3.11 腳本2驗證 217
第6章 Python第三方模組詳解 218
6.1 JSON 219
6.1.1 JSON基礎知識 220
6.1.2 JSON在Python中的使用 221
6.2 正則表達式的痛點 222
6.3 TextFSM和ntc-templates 224
6.3.1 TextFSM的安裝 226
6.3.2 TextFSM模板的創建和套用 227
6.3.3 ntc-templates 231
6.4 NAPALM 237
6.4.1 什麼是NAPALM 237
6.4.2 NAPALM的優點 238
6.4.3 NAPALM的缺點 240
6.4.4 NAPALM的安裝 241
6.4.5 NAPALM的套用 242
6.5 pyntc 248
6.5.1 pyntc和NAPALM的比較 248
6.5.2 pyntc的安裝 249
6.5.3 pyntc的套用 250
6.6 netdev(異步並行) 257
6.6.1 同步與異步 258
6.6.2 異步在Python中的套用 258
6.6.3 netdev的安裝和套用 262
6.7 Netmiko(多執行緒) 267
6.7.1 單執行緒與多執行緒 268
6.7.2 多執行緒在Python中的套用 268
6.7.3 多執行緒在Netmiko中的套用 273
作者簡介
王印,知乎專欄“網路行者”作家,知乎Id:弈心,沙特阿卜杜拉國王科技大學高級網路工程師,11年海外從業經驗,CCIE#40245。2009年起在新加坡先後任職於美國電信運營商AT&T、美國數據中心公司Equinix、新加坡陸路交通管理局(LTA)、新加坡石林IT諮詢公司(SFIT)、美國蘋果公司、蘇格蘭皇家銀行(RBS),對大型園區、金融行業網路的設計與運維具有豐富的實戰經驗。
3.1.3 通過成員運算符做判斷 67
3.2 循環語句 69
3.2.1 while語句 69
3.2.2 for語句 72
3.3 文本檔案的讀/寫 75
3.3.1 open()函式及其模式 75
3.3.2 檔案讀取 76
3.3.3 檔案寫入 84
3.3.4 with語句 88
3.4 自定義函式 89
3.4.1 函式的創建和調用 90
3.4.2 函式值的返回 91
3.4.3 嵌套函式 93
3.5 模組 93
3.5.1 不帶自定義函式的模組 94
3.5.2 帶自定義函式的模組 95
3.5.3 Python內建模組和第三方模組 95
3.5.4 from ... import ... 99
3.5.5 if __name__ == '__main__': 99
3.6 正則表達式 100
3.6.1 什麼是正則表達式 101
3.6.2 正則表達式的驗證 102
3.6.3 正則表達式的規則 103
3.6.4 正則表達式在Python中的套用 110
3.7 異常處理 116
第4章 Python網路運維實驗(GNS3模擬器) 122
4.1 實驗運行環境 122
4.2 Python中的Telnet和SSH模組 124
4.2.1 Telnetlib 124
4.2.2 Paramiko和Netmiko 131
4.3 實驗1 input()函式和getpass模組 143
4.3.1 實驗目的 143
4.3.2 實驗準備 143
4.3.3 實驗代碼 145
4.3.4 代碼分段講解 146
4.3.5 驗證 148
4.4 實驗2 批量登錄不同網段的交換機 152
4.4.1 實驗目的 152
4.4.2 實驗準備 153
4.4.3 實驗代碼 154
4.4.4 代碼分段講解 155
4.4.5 驗證 156
4.5 實驗3 異常處理的套用 157
4.5.1 實驗目的 159
4.5.2 實驗準備 159
4.5.3 實驗代碼 160
4.5.4 代碼分段講解 162
4.5.5 驗證 164
4.6 實驗4 Python實現網路設備的配置備份 166
4.6.1 實驗目的 166
4.6.2 實驗準備 166
4.6.3 實驗代碼 170
4.6.4 代碼分段講解 171
4.6.5 驗證 173
第5章 Python網路運維實戰(真機) 176
5.1 實驗1 大規模批量修改交換機QoS的配置 176
5.1.1 實驗背景 178
5.1.2 實驗目的 178
5.1.3 實驗準備 178
5.1.4 實驗代碼 180
5.1.5 代碼分段講解 181
5.1.6 驗證 182
5.2 實驗2 pythonping的使用方法 185
5.2.1 實驗背景 187
5.2.2 實驗目的 187
5.2.3 實驗思路 187
5.2.4 實驗準備 - 腳本1 188
5.2.5 實驗代碼 - 腳本1 189
5.2.6 腳本1代碼分段講解 190
5.2.7 腳本1驗證 192
5.2.8 實驗準備 - 腳本2 193
5.2.9 實驗代碼 - 腳本2 194
5.2.10 腳本2代碼分段講解 196
5.2.11 腳本2驗證 200
5.3 實驗3 利用Python腳本檢查交換機的配置 201
5.3.1 實驗背景 201
5.3.2 實驗目的 202
5.3.3 實驗思路 202
5.3.4 實驗準備 - 腳本1 203
5.3.5 實驗代碼 - 腳本1 204
5.3.6 腳本1代碼分段講解 206
5.3.7 腳本1驗證 211
5.3.8 實驗準備 - 腳本2 212
5.3.9 實驗代碼 - 腳本2 213
5.3.10 腳本2代碼分段講解 215
5.3.11 腳本2驗證 217
第6章 Python第三方模組詳解 218
6.1 JSON 219
6.1.1 JSON基礎知識 220
6.1.2 JSON在Python中的使用 221
6.2 正則表達式的痛點 222
6.3 TextFSM和ntc-templates 224
6.3.1 TextFSM的安裝 226
6.3.2 TextFSM模板的創建和套用 227
6.3.3 ntc-templates 231
6.4 NAPALM 237
6.4.1 什麼是NAPALM 237
6.4.2 NAPALM的優點 238
6.4.3 NAPALM的缺點 240
6.4.4 NAPALM的安裝 241
6.4.5 NAPALM的套用 242
6.5 pyntc 248
6.5.1 pyntc和NAPALM的比較 248
6.5.2 pyntc的安裝 249
6.5.3 pyntc的套用 250
6.6 netdev(異步並行) 257
6.6.1 同步與異步 258
6.6.2 異步在Python中的套用 258
6.6.3 netdev的安裝和套用 262
6.7 Netmiko(多執行緒) 267
6.7.1 單執行緒與多執行緒 268
6.7.2 多執行緒在Python中的套用 268
6.7.3 多執行緒在Netmiko中的套用 273
作者簡介
王印,知乎專欄“網路行者”作家,知乎Id:弈心,沙特阿卜杜拉國王科技大學高級網路工程師,11年海外從業經驗,CCIE#40245。2009年起在新加坡先後任職於美國電信運營商AT&T、美國數據中心公司Equinix、新加坡陸路交通管理局(LTA)、新加坡石林IT諮詢公司(SFIT)、美國蘋果公司、蘇格蘭皇家銀行(RBS),對大型園區、金融行業網路的設計與運維具有豐富的實戰經驗。