網絡工程師的 Python 之路:網絡運維自動化實戰, 2/e

王印,朱嘉盛

  • 出版商: 電子工業
  • 出版日期: 2023-02-01
  • 售價: $828
  • 貴賓價: 9.5$787
  • 語言: 簡體中文
  • 頁數: 592
  • ISBN: 7121450275
  • ISBN-13: 9787121450273
  • 立即出貨 (庫存 < 4)

買這商品的人也買了...

商品描述

本書第1版於2020年11月出版發行後大獲成功,Python及NetDevOps技術在國內電腦網絡圈子裡迅速走紅,國內與NetDevOps相關的技術文章在網絡上如雨後春筍般大量涌現,行業里也出現了很多要求掌握NetDevOps技術的網絡工程師職位,並且需求越來越多,NetDevOps是“下一代網絡工程師”必須掌握的技能已經成為既定且不可逆的事實。以Python為主的NetDevOps技術知識更迭很快,第2版將在第1版的基礎上添加TextFSM詳解、Netmiko詳解、Nornir詳解、NETCONF詳解及RESTCONF詳解等5章內容,並去掉pyping、pyntc、netdev等一些不再流行或者作者已經公開宣佈不再維護的模塊內容。 另外,第2版將在思科設備的基礎上添加華為設備的內容,由朱嘉盛老師執筆,相信能對主要使用國產設備的國內網絡工程師更加有益。

目錄大綱

第1章 Python的安裝和使用 1
1.1 安裝Python 1
1.1.1 在Windows下安裝Python 3.10.6 1
1.1.2 在Linux下安裝Python 3.10.6 5
1.2 在Windows下使用Python 3.10.6 8
1.2.1 交互模式 8
1.2.2 腳本模式 10
1.2.3 運行Python腳本 13
1.3 在Linux下使用Python 3.10.6 16
1.3.1 交互模式 16
1.3.2 腳本模式 17
1.3.3 運行Python腳本 19
1.3.4 Shebang符號 19
第2章 Python基本語法 21
2.1 變量 21
2.2 註釋 24
2.3 方法和函數 25
2.4 數據類型 26
2.4.1 字符串 27
2.4.2 整數和浮點數 36
2.4.3 列表 39
2.4.4 字典 44
2.4.5 布爾類型 48
2.4.6 集合、元組、空值 51
第3章 Python進階語法 54
3.1 條件(判斷)語句 54
3.1.1 通過比較運算符作判斷 54
3.1.2 通過字符串方法+邏輯運算符作判斷 56
3.1.3 通過成員運算符作判斷 58
3.2 循環語句 60
3.2.1 while語句 60
3.2.2 for語句 63
3.3 文本文件的讀/寫 65
3.3.1 open()函數及其模式 65
3.3.2 文件讀取 66
3.3.3 文件寫入 74
3.3.4 with語句 77
3.4 自定義函數 78
3.4.1 函數的創建和調用 78
3.4.2 函數值的返回 80
3.4.3 嵌套函數 81
3.5 模塊 82
3.5.1 不帶自定義函數的模塊 82
3.5.2 帶自定義函數的模塊 83
3.5.3 Python內建模塊和第三方模塊 84
3.5.4 from…import… 87
3.5.5 if __name__ == '__main__': 87
3.6 正則表達式 88
3.6.1 什麽是正則表達式 89
3.6.2 正則表達式的驗證 89
3.6.3 正則表達式的規則 90
3.6.4 正則表達式在Python中的應用 97
3.7 異常處理 102
3.8 類 106
3.8.1 怎麽創建類 107
3.8.2 方法 109
3.8.3 繼承 110
第4章 Python網絡運維實驗(網絡模擬器) 112
4.1 實驗運行環境 112
4.1.1 實驗操作系統 112
4.1.2 思科實驗拓撲 113
4.1.3 華為實驗拓撲 114
4.2 Python中的Telnet和SSH模塊 114
4.2.1 Telnetlib 115
4.2.2 Paramiko和Netmiko 121
4.3 實驗1 input()函數和getpass模塊(思科設備) 135
4.3.1 實驗目的 136
4.3.2 實驗準備 136
4.3.3 實驗代碼 137
4.3.4 代碼分段講解 138
4.3.5 驗證 139
4.4 實驗1 input()函數和getpass模塊(華為設備) 145
4.5 實驗2 批量登錄地址不連續的交換機(思科設備) 147
4.5.1 實驗目的 147
4.5.2 實驗準備 147
4.5.3 實驗代碼 148
4.5.4 代碼分段講解 149
4.5.5 驗證 150
4.6 實驗2 批量登錄地址不連續的交換機(華為設備) 152
4.7 實驗3 異常處理的應用(思科設備) 155
4.7.1 實驗目的 156
4.7.2 實驗準備 156
4.7.3 實驗代碼 157
4.7.4 代碼分段講解 159
4.7.5 驗證 160
4.8 實驗3 異常處理的應用(華為設備) 162
4.9 實驗4 用Python實現網絡設備的配置備份(思科設備) 164
4.9.1 實驗目的 164
4.9.2 實驗準備 164
4.9.3 實驗代碼 167
4.9.4 代碼分段講解 168
4.9.5 驗證 170
4.10 實驗4 用Python實現網絡設備的配置備份(華為設備) 172
第5章 Python網絡運維實戰(真機) 175
5.1 實驗1 大規模批量修改交換機QoS的配置(思科設備) 175
5.1.1 實驗背景 176
5.1.2 實驗目的 177
5.1.3 實驗準備 177
5.1.4 實驗代碼 178
5.1.5 代碼分段講解 179
5.1.6 驗證 181
5.2 實驗2 pythonping的使用方法(思科設備) 184
5.2.1 實驗背景 185
5.2.2 實驗目的 185
5.2.3 實驗思路 185
5.2.4 實驗準備——腳本1 186
5.2.5 實驗代碼——腳本1 187
5.2.6 腳本1代碼分段講解 187
5.2.7 腳本1驗證 190
5.2.8 實驗準備——腳本2 190
5.2.9 實驗代碼——腳本2 191
5.2.10 腳本2代碼分段講解 193
5.2.11 腳本2驗證 196
5.3 實驗3 利用Python腳本檢查交換機的配置(思科設備) 197
5.3.1 實驗背景 197
5.3.2 實驗目的 198
5.3.3 實驗思路 198
5.3.4 實驗準備——腳本1 199
5.3.5 實驗代碼——腳本1 199
5.3.6 腳本1代碼分段講解 201
5.3.7 腳本1驗證 206
5.3.8 實驗準備——腳本2 206
5.3.9 實驗代碼——腳本2 207
5.3.10 腳本2代碼分段講解 208
5.3.11 腳本2驗證 210
5.4 實驗4 現網超長命令回顯處理(華為設備) 211
5.4.1 實驗背景 211
5.4.2 實驗目的 212
5.4.3 實驗思路 212
5.4.4 實驗準備——腳本1 213
5.4.5 腳本1驗證 214
5.4.6 實驗準備——腳本2 214
5.4.7 腳本2驗證 216
5.5 實驗5 自定義ping工具及exe打包(華為設備) 216
5.5.1 實驗背景 216
5.5.2 實驗目的 217
5.5.3 實驗思路 217
5.5.4 實驗準備——腳本 218
5.5.5 腳本驗證 219
5.5.6 腳本打包 220
5.5.7 打包驗證 220
第6章 Python內置模塊與第三方模塊詳解 222
6.1 JSON 223
6.1.1 JSON基礎知識 223
6.1.2 JSON在Python中的使用 224
6.2 正則表達式的痛點問題 226
6.3 TextFSM和ntc-templates 227
6.3.1 TextFSM的安裝 228
6.3.2 TextFSM模板的創建和應用 230
6.3.3 ntc-templates 234
6.4 NAPALM 238
6.4.1 什麽是NAPALM 239
6.4.2 NAPALM的優點 239
6.4.3 NAPALM的缺點 241
6.4.4 NAPALM的安裝 242
6.4.5 NAPALM的應用 242
6.5 asyncio 248
6.5.1 同步與異步 248
6.5.2 異步在Python中的應用 249
6.6 多線程 252
6.6.1 單線程與多線程 252
6.6.2 多線程在Python中的應用 253
6.6.3 多線程在Netmiko中的應用 257
6.7 CSV和Jinja2 260
6.7.1 CSV配置文件及csv模塊在Python中的使用 260
6.7.2 Jinja2配置模板 262
6.7.3 Jinja2在Python中的使用 264
6.7.4 將生成的配置命令上傳到交換機並執行 267
第7章 TextFSM詳解 273
7.1 TextFSM的安裝及引例 274
7.1.1 TextFSM的安裝 274
7.1.2 TextFSM引例類比 275
7.1.3 TextFSM引例詳解 276
7.2 實驗1 單行回顯單行rule 280
7.2.1 安裝tabulate模塊 280
7.2.2 創建實驗文件夾 281
7.2.3 準備output.txt 282
7.2.4 準備template.txt 282
7.2.5 準備Python腳本 283
7.2.6 執行Python腳本 286
7.2.7 模板匹配過程 286
7.2.8 實驗小結 286
7.3 實驗2 多行回顯單行rule 286
7.3.1 準備output.txt 287
7.3.2 準備template.txt 288
7.3.3 準備Python腳本 289
7.3.4 執行Python腳本 289
7.3.5 模板匹配過程 290
7.3.6 實驗小結 291
7.4 實驗3 多行回顯多行rule,初識關鍵字 291
7.4.1 準備output.txt 291
7.4.2 準備template.txt 292
7.4.3 準備Python腳本 293
7.4.4 實驗調試 294
7.4.5 模板匹配過程 298
7.4.6 實驗小結 299
7.5 實驗4 關鍵字List和動作Continue.Record 299
7.5.1 準備output.txt 299
7.5.2 準備template.txt 300
7.5.3 準備Python腳本 300
7.5.4 實驗調測 301
7.5.5 模板匹配過程 308
7.5.6 實驗小結 308
7.6 TextFSM場景梳理及拓展 309
第8章 Netmiko詳解 310
8.1 實驗1 通過Netmiko登錄一臺交換機(思科設備) 311
8.2 實驗1 通過Netmiko登錄一臺交換機(華為設備) 314
8.3 實驗2 通過Netmiko向設備做配置(思科設備) 315
8.4 實驗2 通過Netmiko向設備做配置(華為設備) 319
8.5 實驗3 用Netmiko配合TextFSM或Genie將回顯格式化(思科設備) 321
8.6 實驗3 用Netmiko配合TextFSM或Genie將回顯格式化(華為設備) 327
8.7 實驗4 通過Netmiko連接多台交換機(思科設備) 330
8.8 實驗4 通過Netmiko連接多台交換機(華為設備) 335
8.9 實驗5 Netmiko配合Jinja2配置模板為設備做配置(思科設備) 336
8.10 實驗5 Netmiko配合Jinja2配置模板為設備做配置(華為設備) 340
8.11 實驗6 在Netmiko中使用enable密碼進入設備特權模式(思科設備) 342
8.12 實驗6 在Netmiko中使用enable密碼進入設備特權模式(華為設備) 346
8.13 實驗7 使用Netmiko向設備傳送文件(思科設備) 348
8.14 實驗7 使用Netmiko向設備傳送文件(華為設備) 351
8.15 實驗8 使用Netmiko處理設備提示命令(思科設備) 354
8.16 實驗8 使用Netmiko處理設備提示命令(華為設備) 357
8.17 實驗9 使用Netmiko獲取設備主機名(思科設備) 358
8.18 實驗9 使用Netmiko獲取設備主機名(華為設備) 360
8.19 Netmiko 4的新功能介紹 361
第9章 Nornir詳解 368
9.1 Nornir實驗準備(思科設備,CentOS系統) 370
9.2 Nornir實驗準備(華為設備,Windows系統) 374
9.3 實驗1 調用nornir_napalm獲取設備的facts和interfaces信息(思科設備) 378
9.4 實驗1 調用nornir_napalm獲取設備的facts和interfaces信息(華為設備) 381
9.5 實驗2 調用nornir_netmiko來獲取設備信息(思科設備) 383
9.6 實驗2 調用nornir_netmiko獲取設備信息(華為設備) 385
9.7 實驗3 使用filter()配合F()做高級過濾(思科設備) 386
9.8 實驗3 使用filter()配合F()做高級過濾(華為設備) 391
9.9 實驗4 使用filter()做簡單過濾(思科設備) 393
9.10 實驗4 使用filter()做簡單過濾(華為設備) 399
9.11 實驗5 在filter()中使用lambda過濾單個或多個設備(思科設備) 400
9.12 實驗5 在filter()中使用lambda過濾單個或多個設備(華為設備) 403
9.13 實驗6 用Nornir為設備做配置(思科設備) 405
9.14 實驗6 用Nornir為設備做配置(華為設備) 407
9.15 實驗7 用Nornir保存、備份設備配置(思科設備) 408
9.16 實驗7 用Nornir保存設備配置(華為設備) 411
9.17 實驗8 用Nornir配合Jinja2為設備做配置(思科設備) 412
9.18 實驗8 用Nornir配合Jinja2給設備做配置(華為設備) 420
9.19 實驗9 Nornir 3 + Scrapli(思科設備) 423
9.20 實驗9 Nornir 3 + Scrapli(華為設備) 432
9.21 實驗10 Nornir 3 + TextFSM(思科設備) 434
9.22 實驗10 Nornir 3 + TextFSM(華為設備) 437
9.23 實驗11 Nornir 3 + ipdb(思科設備) 438
9.24 實驗11 Nornir 3 + ipdb(華為設備) 444
9.25 實驗12 Nornir的Inventory(思科設備) 447
9.26 實驗12 Nornir的Inventory(華為設備) 451
9.27 實驗13 Nornir的Task(思科設備) 455
9.28 實驗13 Nornir的Task(華為設備) 461
9.29 實驗14 使用Nornir按需批量修改交換機配置(思科設備) 463
9.30 實驗14 使用Nornir按需批量修改交換機配置(華為設備) 467
第10章 NETCONF詳解 474
10.1 NETCONF的理論部分 475
10.2 YANG的理論部分 476
10.2.1 什麽是數據模型 476
10.2.2 YANG模型 477
10.2.3 YANG模塊 478
10.2.4 從GitHub下載YANG模塊 478
10.2.5 pyang模塊 481
10.3 NETCONF的實驗部分 482
10.3.1 實驗拓撲和實驗環境 482
10.3.2 實驗步驟 483
10.4 ncclient 490
10.4.1 ncclient簡介 491
10.4.2 ncclient實戰應用(get_config) 492
10.4.3 ncclient實戰應用(edit_config) 503
10.5 NETCONF實驗(華為) 510
10.5.1 實驗拓撲 510
10.5.2 實驗目的 511
10.5.3 啟動NETCONF 511
10.5.4 聯動ncclient 515
第11章 RESTCONF詳解 519
11.1 RESTCONF簡介 519
11.1.1 HTTP方法和CRUD的對應關系 520
11.1.2 Postman 520
11.2 RESTCONF實驗(Postman) 520
11.2.1 實驗環境 520
11.2.2 交換機初始配置 521
11.2.3 Postman初始配置 522
11.2.4 通過GET方法獲取交換機配置 525
11.2.5 通過PATCH方法更改交換機配置 529
11.2.6 通過PUT方法替換交換機配置 532
11.2.7 通過DELETE方法來刪除設備配置 536
11.3 RESTCONF實驗(Requests) 538
11.3.1 Requests模塊簡介 538
11.3.2 HTTP基礎知識回顧 538
11.3.3 Requests實驗環境 542
11.3.4 通過GET方法獲取交換機配置 543
11.3.5 使用?depth=修改深度 547
11.3.6 通過PATCH方法更改交換機配置 549
11.3.7 通過PUT方法替換交換機配置 552
11.3.8 通過POST方法添加交換機配置 556
11.3.9 通過DELETE方法刪除交換機配置 559
11.4 RESTCONF實驗(華為) 561
11.4.1 實驗拓撲 561
11.4.2 實驗目的 561
11.4.3 啟動RESTCONF 562
11.4.4 聯動Postman 564