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

山东省临沂市 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
文章倒是挺全,就是缺个完整的配置文件示例。