工业和信息化精品系列教材

Linux系统自动化运维(Python版)(微课版)

Python语言实现的Linux系统自动化运维实战指南,深入浅出讲解Linux运维技、自动化运维工具Ansible,附赠实战案例与源代码,快速提升运维能力
分享 推荐 4 收藏 63 阅读 5.3K
张莉 , 丁传炜 (主编) 王青青 , 张丽娜 , 邱柳明 (副主编) 钟小平 (作者) 978-7-115-62824-4

关于本书的内容有任何问题,请联系 初美呈

实战案例丰富:本书提供了大量的实战案例,帮助读者更好地理解和掌握Linux系统运维的知识和技能。
配套资源丰富:除了书本内容,还提供了丰富的配套资源,使得学习过程更加生动和实用。
微课版特性:作为微课版图书,本书在内容上更加精炼和实用,适合快节奏的学习需求。
作者经验丰富:作者具有丰富的Linux系统运维和Python编程经验,保证了书本内容的专业性和实用性。

内容摘要

本书主要讲解Python在Linux系统运维开发中的典型应用,通过面向实际运维场景的任务实施,帮助读者掌握Python在系统自动化运维领域的应用。本书共8个项目,内容包括系统自动化运维:从Shell到Python、监控系统与调度运维任务、处理文件内容与配置文件、记录日志与发送邮件、运维数据记录与可视化、远程管理和批量运维服务器、网络管理和网络安全、企业级系统综合运维。
本书内容丰富、结构清晰、重点突出、难点分散,注重实践性和可操作性,对项目中的每个任务都提供详细的代码和解说,便于读者快速上手。
本书可作为高校计算机类专业的Python编程教材,也可作为Linux系统运维教材,还适合广大从事Python自动化运维开发工作的初学者学习和参考。

目录

目录

项目1 系统自动化运维:从Shell到Python 1
知识目标 1
技能目标 1
素养目标 1
任务1.1 从Shell编程开始系统自动化运维 1
任务要求 1
相关知识 2
1.1.1 初识系统自动化运维 2
1.1.2 Linux系统自动化运维的基本工具——Shell脚本 3
任务实现 4
任务1.1.1 准备实验环境 4
任务1.1.2 编写Shell脚本批量创建Linux用户账户 5
任务1.1.3 编写Shell脚本批量检测主机在线状态 7
任务1.1.4 编写Shell脚本一键安装JDK 8
任务1.1.5 编写Shell脚本监控Linux系统性能 9
任务1.2 使用Python提升系统自动化运维技能 13
任务要求 13
相关知识 13
1.2.1 Python简介 13
1.2.2 Python的模块、包与库 14
1.2.3 Python与系统自动化运维 15
任务实现 15
任务1.2.1 搭建Python开发环境 15
任务1.2.2 编写Python程序监控Linux系统性能 18
任务1.3 使用Python执行外部命令 23
任务要求 23
相关知识 23
1.3.1 subprocess模块简介 23
1.3.2 subprocess模块的便利函数 23
1.3.3 subprocess模块的Popen类 25
任务实现 26
任务1.3.1 使用subprocess模块编程批量检测主机在线状态 26
任务1.3.2 编写通用的外部命令执行函数 27
项目小结 28
课后练习 28
项目实训 29
实训1 编写Shell脚本监控系统性能 29
实训2 编写Python脚本监控系统负载 29
实训3 使用subprocess模块编程创建Linux用户账户 29
项目2 监控系统与调度运维任务 30
知识目标 30
技能目标 30
素养目标 30
任务2.1 采集系统信息和管理进程 30
任务要求 30
相关知识 31
2.1.1 了解psutil库 31
2.1.2 系统信息相关函数 31
2.1.3 进程管理功能 33
任务实现 34
任务2.1.1 使用psutil库采集系统信息 34
任务2.1.2 使用psutil库实现进程管理 37
任务2.2 监控文件系统更改 37
任务要求 37
相关知识 38
2.2.1 了解pyinotify库 38
2.2.2 了解watchdog库 40
任务实现 42
任务2.2.1 基于pyinotify库编写文件系统更改监控程序 42
任务2.2.2 基于watchdog库编写文件系统更改监控程序 43
任务2.3 监控Web服务 45
任务要求 45
相关知识 45
2.3.1 PycURL库简介 45
2.3.2 PycURL库的基本用法 46
任务实现 48
基于PycURL库编写Web服务监控程序 48
任务2.4 调度运维任务 50
任务要求 50
相关知识 50
2.4.1 APScheduler库的组件 50
2.4.2 APScheduler库的基本用法 51
任务实现 54
任务2.4.1 使用Cron服务调度运维任务 54
任务2.4.2 基于APScheduler库编程调度运维
任务 54
项目小结 55
课后练习 55
项目实训 56
实训1 使用psutil库编程获取系统启动时间和登录信息 56
实训2 使用watchdog库编程监控文件的移动 56
实训3 使用PycURL库编程判断Web服务的可用性 57
实训4 使用APScheduler库编程调度监控任务 57
项目3 处理文件内容与配置文件 58
知识目标 58
技能目标 58
素养目标 58
任务3.1 解析和处理文件内容 58
任务要求 58
相关知识 59
3.1.1 字符串及其操作 59
3.1.2 文本文件的读写 60
3.1.3 编码和解码 61
3.1.4 正则表达式 62
任务实现 65
任务3.1.1 统计用户账户 65
任务3.1.2 查看配置文件并去除注释和空行 66
任务3.2 操作配置文件 67
任务要求 67
相关知识 67
3.2.1 INI文件及其Python操作方法 67
3.2.2 XML文件及其Python解析方法 68
3.2.3 JSON文件及其Python操作方法 69
3.2.4 YAML文件及其Python操作方法 70
任务实现 72
任务3.2.1 编程操作INI文件 72
任务3.2.2 使用DOM方法读写XML文件 73
任务3.2.3 编程操作JSON文件 74
任务3.2.4 编程操作YAML文件 75
任务3.3 使用模板高效处理文本文件 76
任务要求 76
相关知识 76
3.3.1 什么是模板 76
3.3.2 Jinja2模板语法 77
3.3.3 Jinja2模板的渲染 78
任务实现 79
任务3.3.1 使用Jinja2模板生成HTML文件 79
任务3.3.2 使用Jinja2模板生成XML文件 80
任务3.4 比对文件和目录内容 81
任务要求 81
相关知识 81
3.4.1 difflib模块 81
3.4.2 filecmp模块 82
任务实现 83
任务3.4.1 使用difflib模块编程比较两个文件
内容 83
任务3.4.2 使用filecmp模块编程比较两个目录
内容 84
项目小结 85
课后练习 86
项目实训 87
实训1 获取网页中所有图片的链接 87
实训2 编写将XML文件转换为YAML文件的Python程序 87
实训3 使用Jinja2模板生成HTML报表 87
项目4 记录日志与发送邮件 88
知识目标 88
技能目标 88
素养目标 88
任务4.1 记录日志 88
任务要求 88
相关知识 89
4.1.1 为什么要使用logging模块 89
4.1.2 logging模块的日志级别 89
4.1.3 logging模块的基本用法 89
4.1.4 logging模块的类 91
4.1.5 日志记录的配置 94
任务实现 94
任务4.1.1 将日志消息同时输出到屏幕和文件 94
任务4.1.2 使用日志文件记录异常处理信息 95
任务4.1.3 使用日志记录系统监控异常信息 96
任务4.2 发送邮件 97
任务要求 97
相关知识 97
4.2.1 smtplib模块及其基本用法 97
4.2.2 email模块及其基本用法 98
任务实现 100
任务4.2.1 通过邮件发送报警通知 100
任务4.2.2 通过邮件发送运维报告 102
项目小结 103
课后练习 103
项目实训 104
实训1 使用日志记录文件删除和移动监控的信息 104
实训2 监控文件删除和移动并发送邮件通知 104
项目5 运维数据记录与可视化 105
知识目标 105
技能目标 105
素养目标 105
任务5.1 记录运维数据 105
任务要求 105
相关知识 106
5.1.1 纯文本的CSV文件 106
5.1.2 功能强大的Excel文件 106
5.1.3 使用数据库存储 109
任务实现 110
任务5.1.1 使用CSV文件记录系统监控数据 110
任务5.1.2 使用SQLite数据库记录系统监控数据 112
任务5.2 可视化运维数据 114
任务要求 114
相关知识 115
5.2.1 经典的Python绘图库Matplotlib 115
5.2.2 高效、简洁的Web可视化框架Dash 116
任务实现 121
任务5.2.1 基于Matplotlib库生成系统监控数据统计图表 121
任务5.2.2 通过Dash框架实现系统监控数据仪表盘 123
项目小结 127
课后练习 127
项目实训 128
实训1 使用Excel文件记录系统监控数据并绘制CPU使用率的折线图 128
实训2 基于Dash框架绘制CPU和内存使用率的柱形图 128
项目6 远程管理和批量运维服务器 129
知识目标 129
技能目标 129
素养目标 129
任务6.1 使用Paramiko库远程管理服务器 129
任务要求 129
相关知识 130
6.1.1 SSH协议 130
6.1.2 Paramiko库简介 130
6.1.3 使用SSHClient类建立SSH连接 131
6.1.4 使用Transport类控制SSH连接 132
6.1.5 使用SFTPClient实现文件传输 133
任务实现 134
任务6.1.1 搭建多服务器实验环境 134
任务6.1.2 基于密钥认证连接远程服务器 135
任务6.1.3 在远程服务器上执行sudo命令 137
任务6.1.4 实现交互式操作的远程伪终端 138
任务6.2 使用Fabric库批量管理和运维服务器 139
任务要求 139
相关知识 140
6.2.1 Fabric库简介 140
6.2.2 Connection类的基本用法 140
6.2.3 为sudo命令自动提供密码 143
6.2.4 批量操作远程服务器 143
6.2.5 传统的fab命令行工具 145
任务实现 145
任务6.2.1 批量部署源代码 145
任务6.2.2 集中采集多台服务器的系统信息 147
任务6.2.3 自动部署LAMP平台 148
项目小结 150
课后练习 150
项目实训 151
实训1 使用Paramiko库编程实现基于密钥认证的SSH客户端 151
实训2 使用Fabric库编程实现批量采集服务器的网络流量信息 151
实训3 使用Fabric库编程实现自动安装Docker CE 152
项目7 网络管理和网络安全 153
知识目标 153
技能目标 153
素养目标 153
任务7.1 IP地址管理与DNS解析 153
任务要求 153
相关知识 154
7.1.1 IPy库及其基本用法 154
7.1.2 dnspython库及其基本用法 156
任务实现 157
任务7.1.1 使用IPy库解析IP地址 157
任务7.1.2 使用dnspython库解析DNS记录 158
任务7.2 实现网络探测和安全扫描 159
任务要求 159
相关知识 160
7.2.1 nmap工具 160
7.2.2 python-nmap库 164
任务实现 166
任务7.2.1 检测网络中在线状态的主机 166
任务7.2.2 检测主机的服务及版本 166
任务7.3 使用Scapy库处理网络数据包 167
任务要求 167
相关知识 168
7.3.1 Scapy库简介 168
7.3.2 Scapy库的基本使用方法 168
任务实现 174
任务7.3.1 使用Scapy库进行SYN扫描 174
任务7.3.2 使用Scapy库进行TCP路由跟踪 175
任务7.3.3 使用Scapy库进行抓包重放 175
项目小结 177
课后练习 177
项目实训 178
实训1 检测主机的服务及版本并将结果生成HTML报表 178
实训2 使用Scapy库抓取网络数据包并进行处理 178
项目8 企业级系统综合运维 179
知识目标 179
技能目标 179
素养目标 179
任务8.1 熟悉Ansible的基本用法 179
任务要求 179
相关知识 180
8.1.1 Ansible的特点和应用 180
8.1.2 Ansible的基本架构 181
8.1.3 安装Ansible 181
8.1.4 配置Ansible 182
8.1.5 编写清单文件 183
8.1.6 配置SSH连接 184
8.1.7 Ansible的模块 185
8.1.8 使用Ansible即席命令 186
8.1.9 命令执行模块 187
任务实现 187
任务8.1.1 使用Ansible在目标主机上执行Shell脚本 187
任务8.1.2 使用Ansible提权操作目标主机 190
任务8.2 基于Playbook实现自动化任务 190
任务要求 190
相关知识 191
8.2.1 Playbook的基本语法 191
8.2.2 运行Playbook 193
8.2.3 在Playbook中使用处理程序 195
8.2.4 在Playbook中定义和使用变量 195
8.2.5 在Playbook中使用控制结构 197
8.2.6 使用Ansible Vault加密内容 198
任务实现 200
任务8.2.1 使用Playbook配置系统时钟同步 200
任务8.2.2 使用Playbook批量添加用户账户 202
任务8.3 使用Ansible角色组织Playbook 204
任务要求 204
相关知识 204
8.3.1 理解Ansible角色 204
8.3.2 使用Ansible Galaxy 208
任务实现 210
任务8.3.1 通过角色部署Web负载平衡 210
任务8.3.2 通过Ansible Galaxy部署角色 216
任务8.4 部署Zabbix监控平台 218
任务要求 218
相关知识 218
8.4.1 Zabbix的主要特性 218
8.4.2 Zabbix的基本架构 219
任务实现 219
任务8.4.1 以容器形式安装Zabbix服务器 219
任务8.4.2 使用Ansible部署Zabbix代理 222
任务8.4.3 试用Zabbix实现系统监控 225
项目小结 227
课后练习 228
项目实训 229
实训1 使用Ansible即席命令执行Shell脚本检测目标主机的CPU使用率 229
实训2 使用Playbook批量更改CentOS的系统环境配置 229
实训3 从Ansible Galaxy获取Redis角色并在CentOS服务器上部署 230

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

张莉,副教授,浙江安防职业技术学院大数据技术专业负责人。清华大学访问学者,美国加州大学圣地亚哥分校访问学者,主要从事大数据技术教学和科研工作,主持省级以上科研项目3项,主编教材3部,专利6项,核心期刊发表论文2篇。

推荐用户

同系列书

相关图书

人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部