本文目录导读:

自动化运维是 Python 的强项,适合用它来编写脚本、工具,替代繁琐的人工操作。
以下按常用场景分类,推荐几个适合实践的 Python 自动化运维案例,难度从入门到进阶:
文件和系统管理(最基础,适合练手)
- 日志清理与归档
- 需求:某应用每天产生大量日志,需要删除7天前的
.log文件,或将30天前的文件压缩归档。 - 关键库:
os,shutil,glob,time/datetime。 - 核心逻辑:遍历目录、获取文件修改时间、计算时间差、删除/压缩。
- 需求:某应用每天产生大量日志,需要删除7天前的
- 配置文件批量修改
- 需求:公司有100台服务器的Nginx配置文件
worker_processes需要从auto改为4。 - 关键库:
os,re(正则), 或configparser(处理ini文件)。 - 核心逻辑:读取文件、正则匹配替换、写回文件,可结合SSH(
paramiko)实现远程批量修改。
- 需求:公司有100台服务器的Nginx配置文件
- 磁盘/内存监控并发送告警
- 需求:当磁盘使用率超过85%时,发送邮件或钉钉/企业微信通知。
- 关键库:
psutil,smtplib,requests(发钉钉消息)。 - 核心逻辑:调用
psutil.disk_usage获取数据,判断阈值,触发报警。
网络与服务管理(实用性强)
- 批量服务器存活检测
- 需求:每晚自动检查机房200台服务器的
22/80端口是否可达。 - 关键库:
socket,concurrent.futures(多线程)。 - 核心逻辑:
socket.connect_ex检测端口,利用并发加快速度,输出在线/离线列表。
- 需求:每晚自动检查机房200台服务器的
- 自动化部署脚本(代码上线)
- 需求:从Git拉取最新代码,运行测试,打包,通过SCP分发到多台Web服务器,重启服务。
- 关键库:
os,subprocess(执行系统命令),paramiko(远程SSH/SCP),fabric(更高级封装)。 - 核心逻辑:通过
paramiko连接远程机器,执行git pull、systemctl restart nginx等命令。
- DNS缓存刷新/域名解析检查
- 需求:进行机房迁移后,需要检查数十个域名的解析是否已指向新IP。
- 关键库:
socket(gethostbyname),dnspython。 - 核心逻辑:批量解析域名,与预期IP列表比对,输出不一致的项。
数据库与数据备份(核心运维)
- 自动备份MySQL/PostgreSQL数据库
- 需求:自动列出所有数据库,用
mysqldump导出并压缩,保留最近30天的备份文件。 - 关键库:
subprocess,os,datetime。 - 核心逻辑:使用
subprocess.run执行mysqldump -u root db > backup.sql命令。
- 需求:自动列出所有数据库,用
- 数据库连接池与慢查询监控
- 需求:从MySQL的
slow_query_log中提取执行时间超过2秒的SQL语句,并按次数排序输出。 - 关键库:
pymysql,re。 - 核心逻辑:连接MySQL,执行
SELECT * FROM mysql.slow_log或解析慢查询日志文件。
- 需求:从MySQL的
云资源与API交互(进阶)
- 管理云服务器(AWS/Aliyun/腾讯云)
- 需求:根据CPU使用率,自动创建/释放云服务器,业务高峰时自动增加一台服务器并挂载到SLB。
- 关键库:
boto3(AWS),aliyun-python-sdk-ecs(阿里云),tencentcloud-sdk-python(腾讯云)。 - 核心逻辑:调用云厂商API,查询实例列表,创建/停止/释放实例。
- 域名SSL证书自动续签
- 需求:通过DNS验证方式(调用DNS厂商API添加TXT记录),自动续签Let‘s Encrypt证书。
- 关键库:
acme-tiny,requests(调用DNS API,如阿里云DNS API)。 - 核心逻辑:调用DNS API创建验证记录 -> 请求证书 -> 下载证书 -> 重启Nginx。
实际运维工具编写(综合项目)
- 命令行版主机批量管理工具
- 功能:
python manage.py --hosts 192.168.1.x -c "uptime" - 关键库:
argparse(命令行参数),paramiko,threading。 - 核心逻辑:接收用户输入的主机和命令,并发SSH执行并返回结果。
- 功能:
- 资产扫描与CMDB更新
- 需求:自动登录所有服务器,收集主机名、IP、CPU、内存、磁盘、操作系统版本,写入数据库或Excel。
- 关键库:
paramiko,psutil,openpyxl(写Excel),pymongo(写MongoDB)。 - 核心逻辑:收集信息 -> 整理成字典列表 -> 持久化存储。
推荐学习顺序
- 先做文件系统案例(1, 2, 3):掌握
os和基本逻辑。 - 再做网络监控案例(4, 5):掌握
socket和paramiko,体验远程控制。 - 做备份脚本(7):掌握
subprocess调用外部命令。 - 最后挑战云API(9)和综合工具(11)。
一个小建议
你在实际工作中遇到的最繁琐、重复性最高的手工操作是什么?直接拿Python去自动化它,这就是最好的案例。
- 每天手动登录服务器查日志? -> 写脚本
tail -f并通过关键词过滤。 - 每周发一份服务器状态报表? -> 写脚本采集数据,自动用
openpyxl生成Excel发邮件。
动手写一个自己真正需要的工具,比照着教程敲案例进步要快得多。