第1章 Python的安装和使用 1
- F+ n) E/ V" m8 i: M1.1 安装Python 1
$ h- C8 K. m" p/ p" ?1.1.1 在Windows下安装Python 3.8.2 2$ t. h4 S' P- k9 M# D/ t" v! D$ I! F
1.1.2 在Linux下安装Python 3.8.2 54 f( F+ x8 s* a6 P: I' u
1.2 在Windows下使用Python 3.8.2 84 i/ ~ @* H8 Y; W8 i
1.2.1 交互模式 8
8 U: R( X' C6 U( y' C. Y6 r1.2.2 脚本模式 10
# h; o# j. k) h1 Z6 Y1.2.3 运行Python脚本 14
3 X9 O" T5 @* P4 y) O5 m1.3 在Linux下使用Python 3.8.2 18
) R" l& N# [6 l: s" {1.3.1 交互模式 19. T8 |6 c3 ~3 B/ C& B+ h) t
1.3.2 脚本模式 19/ @0 ^( u& }3 h& P3 F
1.3.3 运行Python脚本 22
: e% B+ H2 w& c8 u4 _1.3.4 Shebang符号 22
1 l. r" k4 l! A. C7 ]/ Z. k第2章 Python基本语法 24% ]$ U. ~) }8 x1 h1 } h) X
2.1 变量 241 @' ]1 h3 D4 N# A8 ?8 L
2.2 注释 27
% ?4 t" _: N/ j) W2.3 方法和函数 283 V& F" b* T6 C0 U
2.4 数据类型 30
^, k; M" L7 W8 k4 A# x1 @2.4.1 字符串 30
/ H5 |* z& _4 A8 I; G' e; q- r2.4.2 整数和浮点数 41
% K: T/ u' W/ M! J+ N2.4.3 列表 45, z* E7 a$ Z) j: e5 {
2.4.4 字典 50
9 Y8 E W- }: {- \4 X* q2.4.5 布尔类型 55) ?! F& ^, ? Z
2.4.6 集合、元组、空值 57* ~* H7 W" K/ q6 b- _# v2 N
第3章 Python进阶语法 62, @/ E( B; }6 d' d% I5 M/ h0 ^
3.1 条件(判断)语句 62
+ [" @" D: Q; d W3.1.1 通过比较运算符做判断 63: I% ~8 j( S. N3 S0 z
3.1.2 通过字符串方法 逻辑运算符做判断 64
r) \! N/ G2 m0 ^3.1.3 通过成员运算符做判断 67
3 ^4 y) G) k; Y4 Y1 m$ o* ~5 F3.2 循环语句 697 Z' { M' E- y) p
3.2.1 while语句 69
+ x$ ]& |5 S( L1 ^; @3.2.2 for语句 72, Y3 C& a+ U; {- D
3.3 文本文件的读/写 751 s# s9 M0 N- p, n* _( L0 R0 I8 j
3.3.1 open()函数及其模式 751 W# \/ Q, F; i# ^7 K0 b: x
3.3.2 文件读取 76! A7 L1 Z0 W+ V
3.3.3 文件写入 84' g6 J/ t' J# p/ c, ]$ O, o
3.3.4 with语句 88
9 V1 p1 V& c( e$ q3.4 自定义函数 89; S& I. t B% d6 ?2 F A
3.4.1 函数的创建和调用 90
0 u- b) j' t# ~: Z! z; c( U( p3.4.2 函数值的返回 91
3 j5 g# E* Q/ q( U3.4.3 嵌套函数 93
, k( _" w" ~& Y1 V! d3.5 模块 93) D1 I3 b& _# X9 L# u: X
3.5.1 不带自定义函数的模块 94$ A! p: Q' }& {$ H
3.5.2 带自定义函数的模块 95: q5 ]7 S9 t- B' v' S( _' b% n
3.5.3 Python内建模块和第三方模块 95
+ n# I" o1 \; T3.5.4 from ... import ... 99
2 x+ a+ m `" O2 @! ?; V3.5.5 if __name__ == '__main__': 99* ~. |2 G8 X- t5 y0 N) Q) g$ y' R
3.6 正则表达式 100/ P# \7 v' x& G/ j8 P
3.6.1 什么是正则表达式 1013 [. @: \ |& [7 ]4 |+ h
3.6.2 正则表达式的验证 102) ?& \2 Y1 F, m# _7 c, x+ M! b
3.6.3 正则表达式的规则 103
: U% P2 k% r! E3 U: [2 K' `3.6.4 正则表达式在Python中的应用 110
$ Q% T. r9 X! q% y3.7 异常处理 116- g% p8 K( q9 J9 M- h, n
第4章 Python网络运维实验(GNS3模拟器) 122+ E2 Z8 {# ^6 @6 M9 j* ?
4.1 实验运行环境 122
" ?, |5 X5 ^( W; a6 e8 c4 O P4.2 Python中的Telnet和SSH模块 124
" @9 b$ @: A$ O* [$ p& t4.2.1 Telnetlib 124
! v0 L+ ~0 x! G' D$ k4.2.2 Paramiko和Netmiko 1311 q# e4 E) H: S7 \
4.3 实验1 input()函数和getpass模块 143
4 F; C+ d4 L9 z: ]- i9 W1 D6 z# e4.3.1 实验目的 143
; H0 _9 f6 M6 u+ {7 u; W$ C9 v3 ~' W4.3.2 实验准备 143, _' T% n9 ^+ ~& Z7 R
4.3.3 实验代码 145" v! b& p) _8 n9 j' U
4.3.4 代码分段讲解 146/ m: O' Q2 ~4 I% ]0 g
4.3.5 验证 148
- [+ n# `% V0 K6 N# A4.4 实验2 批量登录不同网段的交换机 152) B8 e' f* x0 }
4.4.1 实验目的 152
/ N( P$ {* F7 H4 e4.4.2 实验准备 153: Y8 t8 S ^7 V* J
4.4.3 实验代码 154
% C& o; Y$ j* ~6 [5 L4.4.4 代码分段讲解 155
( m* _% K# o+ k8 @8 v- Z. P4.4.5 验证 156
1 ^" d( {: j9 { I. V, D4.5 实验3 异常处理的应用 157; Z- k3 ~' ~1 G8 M
4.5.1 实验目的 159
& X) w; O: y. S [4.5.2 实验准备 159
+ N6 L& m4 v9 d% ^) E7 P! \& k4.5.3 实验代码 160
. y9 K" z# \; n) @) k# B4.5.4 代码分段讲解 162
; \0 m3 G& V! r) G {6 w! [5 C4 u4.5.5 验证 1648 ~: q5 n0 d! z( f9 W4 }/ ~$ l
4.6 实验4 Python实现网络设备的配置备份 166" ~ b& x7 m- _8 I* c# E
4.6.1 实验目的 1660 ~* L2 e4 ~# B# q/ F, h1 H% u
4.6.2 实验准备 1660 z/ I6 L/ p. D9 a, Z. B$ t; |+ }& u
4.6.3 实验代码 170
% |7 ~% C' ]3 Z. a1 |. _4.6.4 代码分段讲解 171
/ ~8 B% G& H" U& u9 N L, O4.6.5 验证 173! u* q, @( y1 u" ~8 d6 b
第5章 Python网络运维实战(真机) 176
& V2 g( R+ E0 d0 m& J5.1 实验1 大规模批量修改交换机QoS的配置 176
; Y" i- [( m, @5.1.1 实验背景 178
+ Z3 p* l! L" |, i1 ^" d# g5 w. b5.1.2 实验目的 178. p6 C1 H) K3 G& R, |7 t
5.1.3 实验准备 178/ I% F, [# u6 x+ }' ? a$ {/ _
5.1.4 实验代码 1805 I5 p: k% O9 z7 ]: ^2 c# M. j
5.1.5 代码分段讲解 181 O8 c- Y6 ^) X- k7 [
5.1.6 验证 182+ G1 y, M$ O- p3 \/ `9 A4 q( W
5.2 实验2 pythonping的使用方法 185
+ D' J: ~5 W7 M8 u5.2.1 实验背景 187
7 y+ S0 N0 j0 D- I5.2.2 实验目的 187& T8 G, a1 S5 ?' _( Z
5.2.3 实验思路 1876 s8 Y3 V2 t, s& f* l: P
5.2.4 实验准备 - 脚本1 188) f, M5 k: H# M6 r
5.2.5 实验代码 - 脚本1 189: h" n Z( M' e) s3 X% [
5.2.6 脚本1代码分段讲解 190! @8 B; Z; {4 f& [7 c# a
5.2.7 脚本1验证 192/ g# ]# o7 w# P/ h5 T
5.2.8 实验准备 - 脚本2 193: G) U( Q' K: ]0 Y
5.2.9 实验代码 - 脚本2 194
5 T+ ^% D2 T0 Z6 n6 k% B) Y, V5.2.10 脚本2代码分段讲解 196. p5 d+ T/ r: Q8 w
5.2.11 脚本2验证 200
- L& _5 d( Z c& S0 o+ s5.3 实验3 利用Python脚本检查交换机的配置 201
5 F3 n- {& b# C5.3.1 实验背景 201
$ t u0 ~" m$ K. f5.3.2 实验目的 202
8 A X4 p% J5 t/ ?1 d5.3.3 实验思路 2024 `$ j7 ?! d) a) u9 c% v
5.3.4 实验准备 - 脚本1 203
5 ?& L: d7 {, \ p. F, u [5.3.5 实验代码 - 脚本1 204
& T4 f2 S6 y& k( h$ a4 R! x5.3.6 脚本1代码分段讲解 206
% Y, [& d7 s( ]7 s* E: C5.3.7 脚本1验证 211" P; b8 L% Z$ x$ g& u" D- u+ R
5.3.8 实验准备 - 脚本2 2124 I, u/ Y. a: z1 s
5.3.9 实验代码 - 脚本2 213
* E1 ?$ S$ R! t; a5.3.10 脚本2代码分段讲解 215" F& J$ _0 \4 n# `$ V/ b
5.3.11 脚本2验证 217
' A' _( `7 I; C, j& ~4 O1 F第6章 Python第三方模块详解 2187 c) M, v4 Y0 q/ P% ?
6.1 JSON 219
" d* Z3 h+ f; |' X U6.1.1 JSON基础知识 2202 b& i1 s/ X/ y! [5 K# g# i
6.1.2 JSON在Python中的使用 221
. V( Y; H) N) }0 e( }6 z6 @8 _4 x6.2 正则表达式的痛点 222! f6 U$ x1 N; U" m4 h5 X
6.3 TextFSM和ntc-templates 224
6 A' k A% ?' D" P6.3.1 TextFSM的安装 226
3 K: }) N& d/ S5 i7 ^5 l3 k6.3.2 TextFSM模板的创建和应用 227
/ @3 L* f) \0 ~# U: v- C# m' n6.3.3 ntc-templates 231/ W( |7 I" F1 o1 m$ e5 T9 Z! n
6.4 NAPALM 237
( A) U& u1 M' R( i4 I6.4.1 什么是NAPALM 237$ j5 C3 f2 G" M9 }7 }: `. Z5 h
6.4.2 NAPALM的优点 238
* K3 o' E# z6 X! c8 ]+ n4 \9 f" ?6.4.3 NAPALM的缺点 240
( C t7 }; ~6 \) A( \6.4.4 NAPALM的安装 241# x8 s& V5 Y2 v& r7 a
6.4.5 NAPALM的应用 242
# S( J) }; A; }! _$ E- _& ?) p* z% Z6.5 pyntc 248
* r5 l( A- L$ ]$ }% K" H
java8.com, Z& H: K9 a$ J
6.5.1 pyntc和NAPALM的比较 248% R$ A, L1 d/ z
6.5.2 pyntc的安装 249/ G7 w2 M& C, a* k% O9 l/ V! c
6.5.3 pyntc的应用 2504 u/ p8 z9 a- M: a5 l4 A
6.6 netdev(异步并行) 257/ j! t2 Z* \1 {' ~7 }6 Z) m
6.6.1 同步与异步 258
' H$ l3 b7 R2 I e! _) L6.6.2 异步在Python中的应用 258
% n+ y7 k+ \/ w6.6.3 netdev的安装和应用 2626 c! \& L- x' w1 k
6.7 Netmiko(多线程) 267
$ M2 H0 N, @* f; m6.7.1 单线程与多线程 268
: d* A2 D- J* w2 O4 l& N6.7.2 多线程在Python中的应用 268' b- Y2 R9 _- `5 N, O0 w
6.7.3 多线程在Netmiko中的应用 273
1 B2 c& C' e7 Q% F7 A9 N g0 n* S; E