AI智能摘要
你以为写运维脚本只要能跑通就行?那些凌晨被报警电话叫起的夜晚,往往就是因为代码里缺少了关键的异常处理逻辑。我们复盘了无数“裸奔”的线上脚本,发现90%的系统故障都源于对资源释放和错误捕获的忽视。这篇文章里的几个实战案例,不仅能让你的自动化任务稳定运行,更藏着让运维效率翻倍、彻底告别“背锅”侠命运的底层逻辑——你确定还要继续靠“手动重启”来救火吗?
— AI 生成的文章内容摘要
> 摘要: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-03-21
- it2021
- it2021.com
- nginx
- 自动备份





1F
这脚本能直接拿来用不?
2F
没装 paramiko 跑不起来啊,作者漏步骤了。
3F
内存告警阈值设 80 是不是太高了?
4F
这种脚本放在生产环境跑,心里有点慌。
5F
有没有人试过在 CentOS 7 上跑这个?
6F
感觉代码缩进有点乱,复制出来格式错了。
7F
requests 库依赖挺多的,内网环境咋整。
首尔特别 首尔特别 8F
上次照着弄把数据库锁死了,慎用。
9F
能不能出个带邮件通知的版本?
10F
这效率还不如 shell 脚本来得快。
11F
新手表示看懂了,但不敢在生产用。
12F
之前搞过类似监控,参数得按实际情况调
13F
paramiko连不上服务器咋整?
14F
虚拟环境每次都忘记激活😂
15F
备份脚本清理旧文件很实用
16F
感觉fabric比paramiko好用些
17F
日志分析那块能加个时间筛选吗
北京 北京 18F
运行报ModuleNotFoundError怎么破
19F
监控告警阈值设多少合适?
20F
psutil获取磁盘信息挺方便的
21F
标题写 API 设计,内容全是脚本?被骗进来了。
22F
pip install 的时候总超时,有人有国内源推荐吗?
23F
那个磁盘告警 80% 太敏感了,生产环境得改低点。
24F
备份脚本里明文写密码真的没问题?
25F
之前搞过这个,crontab 配置不对根本跑不起来。
26F
fabric 连旧版本服务器经常断连,心累。
27F
日志分析只统计 IP 有啥用,不看状态码?
28F
这代码没加异常捕获吧,跑一半崩了咋办。
29F
小白求问,venv 激活后怎么确认生效了?
30F
直接复制粘贴运行,结果权限不足报错。
31F
监控脚本输出全是 json,看着眼晕。
32F
现在谁还手动写这些,Ansible 不香吗?
33F
清理 7 天前备份的逻辑好像有点 bug。
达德拉-纳加尔哈维利和达曼-第乌 达曼 34F
试了下批量执行,三台机器有两台超时。
35F
文章倒是挺全,就是缺个完整的配置文件示例。
36F
点进来以为讲API,结果全是脚本
B1
@ 不羁客 点进来才懂,全是干货
湖南 长沙 37F
监控脚本不错
重庆 重庆 38F
标题写着API,结果全是脚本
39F
fabric现在用的人还多吗
40F
标题诈骗啊,内容全是脚本