on进阶语法 54
3.1条件(判断)语句 54
3.1.1通过比较运算符作判断 54
3.1.2通过字符串方法+逻辑运算符作判断 56
3.1.3通过成员运算符作判断 58
3.2循环语句 60
3.2.1while语句 60
3.2.2for语句 63
3.3文本文件的读/写 65
3.3.1open()函数及其模式 65
3.3.2文件读取 66
3.3.3文件写入 74
3.3.4with语句 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.3Python内建模块和第三方模块 84
3.5.4from…import… 87
3.5.5if__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.2Python中的Telnet和SSH模块 114
4.2.1Telnetlib 115
4.2.2Paramiko和Netmiko 121
4.3实验1input()函数和getpass模块(思科设备) 135
4.3.1实验目的 136
4.3.2实验准备 136
4.3.3实验代码 137
4.3.4代码分段讲解 138
4.3.5验证 139
4.4实验1input()函数和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实验2pythonping的使用方法(思科设备) 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.1JSON 223
6.1.1JSON基础知识 223
6.1.2JSON在Python中的使用 224
6.2正则表达式的痛点问题 226
6.3TextFSM和ntc-templates 227
6.3.1TextFSM的安装 228
6.3.2TextFSM模板的创建和应用 230
6.3.3ntc-templates 234
6.4NAPALM 238
6.4.1什么是NAPALM 239
6.4.2NAPALM的优点 239
6.4.3NAPALM的缺点 241
6.4.4NAPALM的安装 242
6.4.5NAPALM的应用 242
6.5asyncio 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.7CSV和Jinja2 260
6.7.1CSV配置文件及csv模块在Python中的使用 260
6.7.2Jinja2配置模板 262
6.7.3Jinja2在Python中的使用 264
6.7.4将生成的配置命令上传到交换机并执行 267
第7章TextFSM详解 273
7.1TextFSM的安装及引例 274
7.1.1TextFSM的安装 274
7.1.2TextFSM引例类比 275
7.1.3TextFSM引例详解 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.6TextFSM场景梳理及拓展 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实验5Netmiko配合Jinja2配置模板为设备做配置(思科设备) 336
8.10实验5Netmiko配合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.19Netmiko4的新功能介绍 361
第9章Nornir详解 368
9.1Nornir实验准备(思科设备,CentOS系统) 370
9.2Nornir实验准备(华为设备,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实验9Nornir3+Scrapli(思科设备) 423
9.20实验9Nornir3+Scrapli(华为设备) 432
9.21实验10Nornir3+TextFSM(思科设备) 434
9.22实验10Nornir3+TextFSM(华为设备) 437
9.23实验11Nornir3+ipdb(思科设备) 438
9.24实验11Nornir3+ipdb(华为设备) 444
9.25实验12Nornir的Inventory(思科设备) 447
9.26实验12Nornir的Inventory(华为设备) 451
9.27实验13Nornir的Task(思科设备) 455
9.28实验13Nornir的Task(华为设备) 461
9.29实验14使用Nornir按需批量修改交换机配置(思科设备) 463
9.30实验14使用Nornir按需批量修改交换机配置(华为设备) 467
第10章NETCONF详解 474
10.1NETCONF的理论部分 475
10.2YANG的理论部分 476
10.2.1什么是数据模型 476
10.2.2YANG模型 477
10.2.3YANG模块 478
10.2.4从GitHub下载YANG模块 478
10.2.5pyang模块 481
10.3NETCONF的实验部分 482
10.3.1实验拓扑和实验环境 482
10.3.2实验步骤 483
10.4ncclient 490
10.4.1ncclient简介 491
10.4.2ncclient实战应用(get_config) 492
10.4.3ncclient实战应用(edit_config) 503
10.5NETCONF实验(华为设备) 510
10.5.1实验拓扑 510
10.5.2实验目的 511
10.5.3启动NETCONF 511
10.5.4联动ncclient 515
第11章RESTCONF详解 519
11.1RESTCONF简介 519
11.1.1HTTP方法和CRUD的对应关系 520
11.1.2Postman 520
11.2RESTCONF实验(Postman) 520
11.2.1实验环境 520
11.2.2交换机初始配置 521
11.2.3Postman初始配置 522
11.2.4通过GET方法获取交换机配置 525
11.2.5通过PATCH方法更改交换机配置 529
11.2.6通过PUT方法替换交换机配置 532
11.2.7通过DELETE方法来删除设备配置 536
11.3RESTCONF实验(Requests) 538
11.3.1Requests模块简介 538
11.3.2HTTP基础知识回顾 538
11.3.3Requests实验环境 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.4RESTCONF实验(华为设备) 561
11.4.1实验拓扑 561
11.4.2实验目的 561
11.4.3启动RESTCONF 562
11.4.4联动Postman 564