本书遵循网络自动化运维工程师职业素养和专业技能的要求进行内容组织,采用“项目化教学”和“任务驱动”方式展开。本书分四篇,共计12个项目。内容覆盖网络自动化Python编程基础、用于网络自动化的Python模块、用于配置与管理网络的协议以及网络自动化运维的常用工具。基础篇共一个项目,项目1为Python编程基础;部署实施篇共四个项目,项目2为使用telnetlib下发网络配置;项目3为使用paramiko实现网络自动化巡检;项目4为使用 netmiko发现网络拓扑;项目5为使用 PySNMP获取网络数据;协议篇共三个项目,项目6为使用议NETCONF协议配置网络;项目7为使用Telemetry实时监控CPU和内存使用率;项目8为使用RESTCONF协议配置网络;工具篇共四个项目,项目9为使用Ansible实现网络自动化运维;项目10为使用Nornir收集网络日志;项目11为使用scapy处理数据包;项目12为使用NMAP扫描网络。
本书是一本介绍网络自动化运维理论知识和应用技能的教材,既可作为高职或应用型本科电子信息类专业学生的教材,也可作为参加华为HCIP Datacom网络自动化开发者认证的学习者的阅读材料,还可以作为网络架构师、网络运维工程师、网络运维开发工程师、网络与系统管理工程师等从业人员的阅读材料。
1.本书在编写过程中遵循网络工程师职业素养养成和专业技能积累的规律,突出职业能力、职业素养、工匠精神和质量意识培育。
2.本书主要介绍网络自动化运维工程师所需的与自动化运维相关的网络编程技能,从网络工程师的角度出发,将程序员编程的思维带入网络领域,帮助网络工程师开启网络自动化运维编程的“大门”。
3.本书从实战出发讲解原理,采用来自企业的真实案例构建实战场景,使用Python语言完成代码实现,结合实战进行代码解析,通过练习加深理解。
梁广民,深圳职业技术大学教授,21年以来兢兢业业工作在教学第一线,教学方面,主持国家精品课程和国家精品资源共享课程《网络互联技术》建设,主持教育部网络技术专业教学资源库子项目《网络设备安装与调试》课程建设,主持广东省教育厅教研项目《高职计算机类专业综合改革》项目,主编出版教材19本,其中《网络互联技术》、《网络系统建设与运维(高级)》和《网络攻防案例教程》3本教材入选“职业教育国家规划教材”。指导224名学生通过CCIE认证考试和80名同学通过HCIE认证考试,数量位居全国之首。指导学生获得全国职业院校技能大赛《计算机网络应用》和《网络系统管理》一等奖。参与华为和中锐公司2项1+X标准制定。多年来为来自全国的2000多名教师进行网络技术师资培训。科研方面,主要从事大数据分析、自动驾驶、生物信息等领域的研究,主持市级、校级重点和企业横向8项,参与广东省自然科学基金3项,研究经费达100多万元,先后发表论文16篇,其中SCI收录6篇,EI收录4篇,中文核心期刊5篇。先后通过华为、思科等18个IT领域职业认证或讲师认证。先后为卫生部、国家电网、中国联通、广东发展银行和广东省税务局员工进行网络技术培训。曾经参与过中国银行、国家电网和学校校园网等网络升级和改造项目。
第 一篇 基础篇 9
项目1 Python编程基础 9
1.1 学习目标 9
1.2 任务陈述 9
1.3 知识准备 10
1.3.1 Python基础 10
1.3.2 文件处理 15
1.3.3 网络模块 18
1.4 任务实施 24
1.4.1 创建文本文件 24
1.4.2 编写Python代码 24
1.4.3 运行Python代码 26
1.5 任务总结 26
1.6 知识巩固 26
第二篇 部署实施篇 27
项目2 使用telnetlib下发网络配置 27
2.1 学习目标 27
2.2 任务陈述 28
2.3 知识准备 28
2.3.1 网络自动化运维 28
2.3.2 SNMP协议 29
2.3.3 NTP协议 33
2.3.4 telnetlib模块 34
2.4 任务实施 35
2.4.1 配置Telnet服务 36
2.4.2 配置NTP服务 36
2.4.3 编写配置文件 37
2.4.4 编写Python脚本 38
2.4.5 运行Python脚本 39
2.4.6 验证结果 40
2.5 任务总结 42
2.6 知识巩固 42
项目3 使用paramiko实现网络自动化巡检 43
3.1 学习目标 43
3.2 任务陈述 43
3.3 知识准备 43
3.3.1 网络设备巡检 43
3.3.2 paramiko模块 44
3.4 任务实施 47
3.4.1 配置SSH服务端 48
3.4.2 编写Python脚本 49
3.4.3 运行Python脚本 51
3.5 任务总结 53
3.6 知识巩固 53
项目4 使用netmiko发现网络拓扑 54
4.1 学习目标 54
4.2 任务陈述 54
4.3 知识准备 54
4.3.1 JSON数据格式 54
4.3.2 netmiko模块 56
4.4 任务实施 58
4.4.1 配置SSH服务和LLDP 58
4.4.2 编写Python脚本 60
4.4.3 运行Python脚本 63
4.4.4 查看拓扑图 64
4.5 任务总结 64
4.6 知识巩固 64
项目5 使用PySNMP获取网络数据 66
5.1 学习目标 66
5.2 任务陈述 66
5.3 知识准备 66
5.3.1 PySNMP模块简介 66
5.3.2 PySNMP使用方法 68
5.4 任务实施 72
5.4.1 配置设备SNMPv3 72
5.4.2 获取OID 73
5.4.3 编写脚本 73
5.4.4 运行脚本 75
5.5 任务总结 75
5.6 知识巩固 75
第三篇 协议篇 77
项目6 使用NETCONF协议配置网络 78
6.1 学习目标 78
6.2 任务陈述 78
6.3 知识准备 79
6.3. 1 XML数据格式 79
6.3.2 NETCONF协议基础 84
6.3.3 NETCONF基本操作 89
6.3.4 NETCONF客户端 90
6.3.5 设备上配置NETCONF 92
6.4 任务实施 94
6.4.1 设备上配置SSH服务 95
6.4.2 使能设备NETCONF功能 95
6.4.3 编写Python脚本 96
6.4.4 运行Python脚本下发配置 111
6.4.5 验证配置 113
6.5 任务总结 114
6.6 知识巩固 114
项目7 使用Telemetry实时监控CPU和内存使用率 116
7.1 学习目标 116
7.2 任务陈述 116
7.3知识准备 117
7.3.1 YANG建模语言 117
7.3.2 Telemetry技术原理 122
7.3.3 Telemetry数据订阅 124
7.3.4 采样数据与编码格式 127
7.3.5 Proto文件 131
7.3.6 gRPC传输协议 136
7.3.7 配置设备侧数据订阅 137
7.4 任务实施 140
7.4.1 配置SSH密码登录 140
7.4.2 配置目标采集器 140
7.4.3 配置采样路径和过滤条件 141
7.4.4 配置订阅 141
7.4.5 安装grpcio-tools 141
7.4.6 创建PyCharm项目 141
7.4.7 编译proto文件 143
7.4.8 编写服务端Python脚本 145
7.4.9 运行Python脚本验证结果 146
7.5 任务总结 147
7.6 知识巩固 148
项目8 使用RESTCONF协议配置网络 149
8.1 学习目标 149
8.2 任务陈述 149
8.3 知识准备 150
8.3.1 HTTP协议 150
8.3.2 RESTCONF基础 155
8.3.3 配置RESTCONF 161
8.3.4 requests模块 161
8.4 任务实施 162
8.4.1 配置SSH密码登录 163
8.4.2 配置RESTCONF 163
8.4.3 编写Python脚本 164
8.4.4 运行Python脚本 170
8.4.5 验证 171
8.5 任务总结 172
8.6 知识巩固 172
第四篇 工具篇 173
项目9 使用Ansible实现网络自动化运维 174
9.1 学习目标 174
9.2 任务陈述 174
9.3 知识准备 174
9.3.1 YAML配置文件语言 174
9.3.2 Ansible基础 177
9.3.3 Ansible剧本 181
9.3.4 任务控制 182
9.4 任务实施 183
9.4.1 配置SSH服务端 184
9.4.2 创建资产文件 185
9.4.3 编写收集信息的playbook 185
9.4.4 验证执行收集信息的playbook 186
9.4.5 编写配置交换机的playbook 189
9.4.6 验证执行配置交换机的playbook 190
9.5 任务总结 192
9.6 知识巩固 192
项目10 使用Nornir收集网络日志 193
10.1 学习目标 193
10.2 任务陈述 193
10.3 知识准备 193
10.3.1 Nornir基础 193
10.3.2 Nornir插件 200
10.4 任务实施 205
10.4.1 配置SSH服务 205
10.4.2 安装配置Syslog日志服务器。 206
10.4.3 创建主机清单 206
10.4.4 编写Python脚本 208
10.4.5 执行Python脚本 208
10.4.6 服务器接收日志 209
10.5 任务总结 210
10.6 知识巩固 210
项目11 使用scapy处理数据包 211
11.1 学习目标 211
11.2 任务陈述 211
11.3 知识准备 211
11.3.1 Scapy基础 211
11.3.2 Scapy函数 221
11.5 任务实施 228
11.5.1 SYN扫描 228
11.5.2 ARP ping 228
11.5.3 ICMP ping 229
11.5.4 UDP ping 230
11.5 任务总结 232
11.6 知识巩固 232
项目12 使用NMAP扫描网络 233
12.1 学习目标 233
12.2 任务陈述 233
12.3 知识准备 233
12.3.1 NMAP基础 233
12.3.2 主机发现 235
12.3.3 端口扫描 237
12.3.4 服务和版本探测 239
12.5.5 操作系统探测 240
12.5.6 Python中的nmap模块 240
12.4 任务实施 241
12.5 任务总结 244
12.6 知识巩固 245
参考资料 246