-
内容大纲
本书主要讲解Python在Linux系统运维开发中的典型应用,通过面向实际运维场景的任务实施,帮助读者掌握Python在系统自动化运维领域的应用。本书共8个项目,内容包括系统自动化运维:从Shell到Python、监控系统与调度运维任务、处理文件内容与配置文件、记录日志与发送邮件、运维数据记录与可视化、远程管理和批量运维服务器、网络管理和网络安全、企业级系统综合运维。
本书内容丰富、结构清晰、重点突出、难点分散,注重实践性和可操作性,对项目中的每个任务都提供详细的代码和解说,便于读者快速上手。
本书可作为高校计算机类专业的Python编程教材,也可作为Linux系统运维教材,还适合广大从事Python自动化运维开发工作的初学者学习和参考。 -
作者介绍
-
目录
项目1 系统自动化运维:从Shell到Python
知识目标
技能目标
素养目标
任务1.1 从Shell编程开始系统自动化运维
任务要求
相关知识
1.1.1 初识系统自动化运维
1.1.2 Linux系统自动化运维的基本工具——Shell脚本
任务实现
任务1.1.1 准备实验环境
任务1.1.2 编写Shell脚本批量创建Linux用户账户
任务1.1.3 编写Shell脚本批量检测主机在线状态
任务1.1.4 编写Shell脚本一键安装JDK
任务1.1.5 编写Shell脚本监控Linux系统性能
任务1.2 使用Python提升系统自动化运维技能
任务要求
相关知识
1.2.1 Python简介
1.2.2 Python的模块、包与库
1.2.3 Python与系统自动化运维
任务实现
任务1.2.1 搭建Python开发环境
任务1.2.2 编写Python程序监控Linux系统性能
任务1.3 使用Python执行外部命令
任务要求
相关知识
1.3.1 subprocess模块简介
1.3.2 subprocess模块的便利函数
1.3.3 subprocess模块的Popen类
任务实现
任务1.3.1 使用subprocess模块编程批量检测主机在线状态
任务1.3.2 编写通用的外部命令执行函数
项目小结
课后练习
项目实训
实训1 编写Shell脚本监控系统性能
实训2 编写Python脚本监控系统负载
实训3 使用subprocess模块编程创建Linux用户账户
项目2 监控系统与调度运维任务
知识目标
技能目标
素养目标
任务2.1 采集系统信息和管理进程
任务要求
相关知识
2.1.1 了解psutil库
2.1.2 系统信息相关函数
2.1.3 进程管理功能
任务实现
任务2.1.1 使用psutil库采集系统信息
任务2.1.2 使用psutil库实现进程管理
任务2.2 监控文件系统更改
任务要求
相关知识
2.2.1 了解pyinotify库
2.2.2 了解watchdog库
任务实现
任务2.2.1 基于pyinotify库编写文件系统更改监控程序
任务2.2.2 基于watchdog库编写文件系统更改监控程序
任务2.3 监控Web服务
任务要求
相关知识
2.3.1 PycURL库简介
2.3.2 PycURL库的基本用法
任务实现
基于PycURL库编写Web服务监控程序
任务2.4 调度运维任务
任务要求
相关知识
2.4.1 APScheduler库的组件
2.4.2 APScheduler库的基本用法
任务实现
任务2.4.1 使用Cron服务调度运维任务
任务2.4.2 基于APScheduler库编程调度运维任务
项目小结
课后练习
项目实训
实训1 使用psutil库编程获取系统启动时间和登录信息
实训2 使用watchdog库编程监控文件的移动
实训3 使用PycURL库编程判断Web服务的可用性
实训4 使用APScheduler库编程调度监控任务
项目3 处理文件内容与配置文件
知识目标
技能目标
素养目标
任务3.1 解析和处理文件内容
任务要求
相关知识
3.1.1 字符串及其操作
3.1.2 文本文件的读写
3.1.3 编码和解码
3.1.4 正则表达式
任务实现
任务3.1.1 统计用户账户
任务3.1.2 查看配置文件并去除注释和空行
任务3.2 操作配置文件
任务要求
相关知识
3.2.1 INI文件及其Python操作方法
3.2.2 XML文件及其Python解析方法
3.2.3 JSON文件及其Python操作方法
3.2.4 YAML文件及其Python操作方法
任务实现
任务3.2.1 编程操作INI文件
任务3.2.2 使用DOM方法读写XML文件
任务3.2.3 编程操作JSON文件
任务3.2.4 编程操作YAML文件
任务3.3 使用模板高效处理文本文件
任务要求
相关知识
3.3.1 什么是模板
3.3.2 Jinja2模板语法
3.3.3 Jinja2模板的渲染
任务实现
任务3.3.1 使用Jinja2模板生成HTML文件
任务3.3.2 使用Jinja2模板生成XML文件
任务3.4 比对文件和目录内容
任务要求
相关知识
3.4.1 difflib模块
3.4.2 filecmp模块
任务实现
任务3.4.1 使用difflib模块编程比较两个文件内容
任务3.4.2 使用filecmp模块编程比较两个内容
项目小结
课后练习
项目实训
实训1 获取网页中所有图片的链接
实训2 编写将XML文件转换为YAML文件的Python程序
实训3 使用Jinja2模板生成HTML报表
项目4 记录日志与发送邮件
知识目标
技能目标
素养目标
任务4.1 记录日志
任务要求
相关知识
4.1.1 为什么要使用logging模块
4.1.2 logging模块的日志级别
4.1.3 logging模块的基本用法
4.1.4 logging模块的类
4.1.5 日志记录的配置
任务实现
任务4.1.1 将日志消息同时输出到屏幕和文件
任务4.1.2 使用日志文件记录异常处理信息
任务4.1.3 使用日志记录系统监控异常信息
任务4.2 发送邮件
任务要求
相关知识
4.2.1 smtplib模块及其基本用法
4.2.2 email模块及其基本用法
任务实现
任务4.2.1 通过邮件发送报警通知
任务4.2.2 通过邮件发送运维报告
项目小结
课后练习
项目实训
实训1 使用日志记录文件删除和移动监控的信息
实训2 监控文件删除和移动并发送邮件通知
项目5 运维数据记录与可视化
知识目标
技能目标
素养目标
任务5.1 记录运维数据
任务要求
相关知识
5.1.1 纯文本的CSV文件
5.1.2 功能强大的Excel文件
5.1.3 使用数据库存储
任务实现
任务5.1.1 使用CSV文件记录系统监控数据
任务5.1.2 使用SQLite数据库记录系统监控数据
任务5.2 可视化运维数据
任务要求
相关知识
5.2.1 经典的Python绘图库Matplotlib
5.2.2 高效、简洁的Web可视化框架Dash
任务实现
任务5.2.1 基于Matplotlib库生成系统监控数据统计图表
任务5.2.2 通过Dash框架实现系统监控数据仪表盘
项目小结
课后练习
项目实训
实训1 使用Excel文件记录系统监控数据并绘制CPU使用率的折线图
实训2 基于Dash框架绘制CPU和内存使用率的柱形图
项目6 远程管理和批量运维服务器
知识目标
技能目标
素养目标
任务6.1 使用Paramiko库远程管理服务器
任务要求
相关知识
6.1.1 SSH协议
6.1.2 Paramiko库简介
6.1.3 使用SSHClient类建立SSH连接
6.1.4 使用Transport类控制SSH连接
6.1.5 使用SFTPClient实现文件传输
任务实现
任务6.1.1 搭建多服务器实验环境
任务6.1.2 基于密钥认证连接远程服务器
任务6.1.3 在远程服务器上执行sudo命令
任务6.1.4 实现交互式操作的远程伪终端
任务6.2 使用Fabric库批量管理和运维服务器
任务要求
相关知识
6.2.1 Fabric库简介
6.2.2 Connection类的基本用法
6.2.3 为sudo命令自动提供密码
6.2.4 批量操作远程服务器
6.2.5 传统的fab命令行工具
任务实现
任务6.2.1 批量部署源代码
任务6.2.2 集中采集多台服务器的系统信息
任务6.2.3 自动部署LAMP平台
项目小结
课后练习
项目实训
实训1 使用Paramiko库编程实现基于密钥认证的SSH客户端
实训2 使用Fabric库编程实现批量采集服务器的网络流量信息
实训3 使用Fabric库编程实现自动安装Docker CE
项目7 网络管理和网络安全
知识目标
技能目标
素养目标
任务7.1 IP地址管理与DNS解析
任务要求
相关知识
7.1.1 IPy库及其基本用法
7.1.2 dnspython库及其基本用法
任务实现
任务7.1.1 使用IPy库解析IP地址
任务7.1.2 使用dnspython库解析DNS记录
任务7.2 实现网络探测和安全扫描
任务要求
相关知识
7.2.1 nmap工具
7.2.2 python-nmap库
任务实现
任务7.2.1 检测网络中在线状态的主机
任务7.2.2 检测主机的服务及版本
任务7.3 使用Scapy库处理网络数据包
任务要求
相关知识
7.3.1 Scapy库简介
7.3.2 Scapy库的基本使用方法
任务实现
任务7.3.1 使用Scapy库进行SYN扫描
任务7.3.2 使用Scapy库进行TCP路由跟踪
任务7.3.3 使用Scapy库进行抓包重放
项目小结
课后练习
项目实训
实训1 检测主机的服务及版本并将结果生成HTML报表
实训2 使用Scapy库抓取网络数据包并进行处理
项目8 企业级系统综合运维
知识目标
技能目标
素养目标
任务8.1 熟悉Ansible的基本用法
任务要求
相关知识
8.1.1 Ansible的特点和应用
8.1.2 Ansible的基本架构
8.1.3 安装Ansible
8.1.4 配置Ansible
8.1.5 编写清单文件
8.1.6 配置SSH连接
8.1.7 Ansible的模块
8.1.8 使用Ansible即席命令
8.1.9 命令执行模块
任务实现
任务8.1.1 使用Ansible在目标主机上执行Shell脚本
任务8.1.2 使用Ansible提权操作目标主机
任务8.2 基于Playbook实现自动化任务
任务要求
相关知识
8.2.1 Playbook的基本语法
8.2.2 运行Playbook
8.2.3 在Playbook中使用处理程序
8.2.4 在Playbook中定义和使用变量
8.2.5 在Playbook中使用控制结构
8.2.6 使用Ansible Vault加密内容
任务实现
任务8.2.1 使用Playbook配置系统时钟同步
任务8.2.2 使用Playbook批量添加用户账户
任务8.3 使用Ansible角色组织Playbook
任务要求
相关知识
8.3.1 理解Ansible角色
8.3.2 使用Ansible Galaxy
任务实现
任务8.3.1 通过角色部署Web负载平衡
任务8.3.2 通过Ansible Galaxy部署角色
任务8.4 部署Zabbix监控平台
任务要求
相关知识
8.4.1 Zabbix的主要特性
8.4.2 Zabbix的基本架构
任务实现
任务8.4.1 以容器形式安装Zabbix服务器
任务8.4.2 使用Ansible部署Zabbix代理
任务8.4.3 试用Zabbix实现系统监控
项目小结
课后练习
项目实训
实训1 使用Ansible即席命令执行Shell脚本检测目标主机的CPU使用率
实训2 使用Playbook批量更改CentOS的系统环境配置
实训3 从Ansible Galaxy获取Redis角色并在CentOS服务器上部署
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...