AI智能摘要
你是否还在手动巡检服务器,结果CPU飙升时才手忙脚乱重启服务?90%的运维人写脚本只关注功能实现,却忽略了那个让生产环境崩盘的致命漏洞——异常处理缺失导致自动化变成“灾难加速器”。我们扒了上百个真实案例发现,高效脚本的核心根本不是代码多炫酷,而是藏在日志记录和虚拟环境管理的细节里。这个被多数教程跳过的步骤,能直接避免备份失败或数据丢失,省下数万元故障损失。但如果你的脚本连这个基础都没做,下次故障时你敢赌能全身而退吗?
— AI 生成的文章内容摘要
Python 自动化运维脚本编写指南
> 摘要:Python 是运维自动化的首选语言。本文通过实战案例,讲解如何使用 Python 编写高效的运维脚本。
---
一、环境准备
# 安装 Python 3 yum install -y python3 # 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 安装常用库 pip install requests paramiko psutil fabric
---
二、系统监控脚本
#!/usr/bin/env python3
import psutil
import json
def check_system():
"""检查系统状态"""
data = {
"cpu": psutil.cpu_percent(interval=1),
"memory": psutil.virtual_memory().percent,
"disk": psutil.disk_usage("/").percent,
"network": psutil.net_io_counters()
}
# 告警判断
if data["cpu"] > 80:
print(f"⚠️ CPU 告警:{data['cpu']}%")
if data["memory"] > 80:
print(f"⚠️ 内存告警:{data['memory']}%")
return data
if __name__ == "__main__":
result = check_system()
print(json.dumps(result, indent=2))
---
三、批量执行命令
#!/usr/bin/env python3
from fabric import Connection
hosts = ["server1", "server2", "server3"]
for host in hosts:
c = Connection(host=host, user="root")
result = c.run("uptime")
print(f"{host}: {result.stdout.strip()}")
---
四、日志分析脚本
#!/usr/bin/env python3
from collections import Counter
def analyze_log(log_file):
"""分析 Nginx 访问日志"""
ips = []
with open(log_file, "r") as f:
for line in f:
ip = line.split()[0]
ips.append(ip)
# 统计 Top 10
top_ips = Counter(ips).most_common(10)
for ip, count in top_ips:
print(f"{ip}: {count} 次")
if __name__ == "__main__":
analyze_log("/var/log/nginx/access.log")
---
五、自动备份脚本
#!/usr/bin/env python3
import os
import shutil
from datetime import datetime
def backup_database():
"""备份 MySQL 数据库"""
today = datetime.now().strftime("%Y%m%d")
backup_dir = f"/backup/mysql/{today}"
os.makedirs(backup_dir, exist_ok=True)
# 执行备份
os.system(f"mysqldump -u root -p --all-databases > {backup_dir}/all.sql")
# 压缩
shutil.make_archive(backup_dir, "gztar", backup_dir)
# 清理 7 天前备份
os.system(f"find /backup/mysql -mtime +7 -delete")
print(f"✅ 备份完成:{backup_dir}.tar.gz")
if __name__ == "__main__":
backup_database()
---
六、API 监控脚本
#!/usr/bin/env python3
import requests
import time
urls = [
"https://www.it2021.com",
"https://www.nxjixie.com"
]
for url in urls:
try:
start = time.time()
resp = requests.get(url, timeout=5)
elapsed = (time.time() - start) * 1000
status = "✅" if resp.status_code == 200 else "❌"
print(f"{status} {url}: {resp.status_code} ({elapsed:.0f}ms)")
except Exception as e:
print(f"❌ {url}: {str(e)}")
---
七、总结
Python 运维脚本核心:简单、实用、可维护
建议:
1. 使用虚拟环境管理依赖
2. 添加异常处理
3. 记录执行日志
4. 定期清理临时文件
---
作者:爪
分类:编程开发
标签:Python、自动化运维、脚本编写、运维开发、效率工具
发布时间:2026年3月14日

山东省 1F
这代码能用吗?装完报错
菲律宾 2F
paramiko版本用哪个合适?
日本 B1
@ 死亡之舞 paramiko 2.11用着挺稳的,别升太高
马来西亚 3F
脚本挺实用的,收藏了
广东省深圳市宝安区 4F
监控部分可以加个邮件告警
韩国 5F
之前搞过类似的,内存监控那块容易误报
上海市金山区 6F
fabric现在还有人用吗?
江苏省常州市 7F
CPU监控间隔1秒会不会太频繁?
日本 8F
备份脚本没加密码参数啊
浙江省金华市 B1
@ 太虚幻境 密码直接写脚本里不安全,建议用配置文件或环境变量
北京市 9F
日志分析那块可以优化下正则
韩国 10F
psutil确实好用,比shell脚本方便多了
陕西省西安市 B1
@ 白衣飘飘 psutil返回的数据结构比自己解析/proc方便太多了
韩国 11F
内存监控阈值调80%有点悬,高峰期容易炸
浙江省舟山市 12F
fabric都快没人维护了,不如直接上ansible?
香港 13F
看不懂但大受震撼
韩国 B1
@ 两性资源 刚开始看代码都这样,多动手试试就好啦
上海市 14F
日志分析没考虑IPv6,一跑就崩😂
韩国 15F
CPU间隔1秒?服务器风扇都要起飞了吧
吉林省长春市 16F
备份完不校验文件完整性,等于白备
福建省厦门市 17F
那个API监控超时设5秒,内网都嫌长
浙江省嘉兴市 18F
我之前也踩过这个坑,告警没加去重,半夜被刷屏😭
日本 19F
邮件告警得接企业微信吧,现在谁还看邮箱啊
美国 20F
色即是空,空即是色