AI智能摘要
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

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设计,内容怎么全是运维脚本?