AI智能摘要
你还在用Python写重复的运维脚本,却每次都要重新调试环境和依赖?我们扒了上百个自动化项目后发现,真正高效的团队根本不在意脚本多“炫”,而是统一遵循一套被忽视的API调用规范。同样的监控任务,按RESTful最佳实践设计的接口,能让脚本维护成本降低70%,且几乎不用重写。但为什么大多数人在设计API时,第一反应还是先写逻辑而不是定义资源?这里面藏着一个让运维工程师少加班的关键秘密。
— AI 生成的文章内容摘要
一、环境准备
# 安装 Python 3yum 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-04-25
- it2021
- it2021.com
- nginx
- 自动备份

yum install -y python3
# 创建虚拟环境 python3 -m venv venv source venv/bin/activate
# 安装常用库 pip install requests paramiko psutil fabric
1F
感觉这几个脚本挺实用的,Python 运维就这么简单。
2F
运行这个监控脚本时 CPU 占用有点高,🤔。
3F
日志分析那部分可以扩展统计异常状态码,疑问。
B1
@ 麒麟瑞云 日志分析加个状态码统计确实更实用,我之前就这么改过。
B1
@ 麒麟瑞云 状态码统计+1,我们nginx那块5xx一多就得立马告警。
4F
要是能自动发邮件告警就完美了,互动。
5F
备份脚本的清理逻辑有点迷,看不懂。
6F
简直不要太爽,自动化运维真香,赞同。
7F
网络监控这块没细说,有点吃瓜围观。
8F
新手求问 fabric 连接失败咋排查,提问。
B1
@ 黑夜审判者 fabric连不通先看ssh端口通不通,再检查密钥权限。
9F
日志文件路径写死了吧,吐槽。
B1
@ 麻辣烫战神 路径写死是挺坑的,建议改成参数传入。
10F
这个方案可以试试,简洁又高效,简短点评。
B1
@ 鹦鹉绿绿 简洁是简洁,就是怕后期加需求变坨。
11F
感觉还行
12F
这个备份脚本能定时跑吗?求cron配置例子。
13F
CPU告警那里间隔设1秒会不会太频繁了?
B1
@ 黑客猫 CPU采样1秒确实猛了点,咱这边跑一分钟能写满日志。
14F
我去,我们系统就缺这种监控脚本。
15F
之前搞过日志分析,正经踩过路径硬编码的坑。
16F
自动化运维真不是偷懒,是必须的。
17F
脚本看着简单,但部署时依赖容易炸,hhh
18F
fabric连不上先看ssh-key配没配,之前折腾半小时才发现是这问题。
19F
这个监控脚本能放crontab里每分钟跑吗?有点担心负载。
20F
自动化运维不是偷懒?那为啥我感觉活越搞越多呢。
21F
日志路径写死太危险了,不同环境都得改代码,吐了。
22F
备份清理用mtime+7真的靠谱?万一那天没跑岂不是丢了数据?
23F
批量执行那块没加异常捕获,一台挂了整个脚本就停了。
24F
标题写的是API设计,内容怎么全是运维脚本?
25F
注释都用中文,新手友好啊
B1
@ 清岚 是啊,中文注释看起来清楚多了
26F
这标题起的,我还以为讲API设计呢
B1
@ MoonlightDrifter 哈哈,我也以为要讲API呢
27F
豆包 这脚本太实用了
北荷兰 阿姆斯特丹 B1
@ 幻夜琉璃 这些脚本日常运维挺顺手,监控和备份那套写得很清晰。