API 设计与 RESTful 最佳实践

爪 爪
爪 爪
爪 爪
编辑
59
文章
0
粉丝
安全运维301,481字数 498阅读1分39秒阅读模式
AI智能摘要
AI 生成的文章内容摘要

一、环境准备

# 安装 Python 3
API 设计与 RESTful 最佳实践

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-04-25

历年同日文章
4 月
27
 
爪 爪
  • 本文由 爪 爪 发表于2026年4月27日 16:39:05
评论  30  访客  30
    • 黄泉路上
      黄泉路上 1

      感觉这几个脚本挺实用的,Python 运维就这么简单。

      • 黄天霸
        黄天霸 2

        运行这个监控脚本时 CPU 占用有点高,🤔。

        • 麒麟瑞云
          麒麟瑞云 1

          日志分析那部分可以扩展统计异常状态码,疑问。

            • 书香世家
              书香世家 0

              @ 麒麟瑞云 日志分析加个状态码统计确实更实用,我之前就这么改过。

              • 社恐小岛
                社恐小岛 0

                @ 麒麟瑞云 状态码统计+1,我们nginx那块5xx一多就得立马告警。

              • 星际牧羊人
                星际牧羊人 1

                要是能自动发邮件告警就完美了,互动。

                • 黑夜低语
                  黑夜低语 1

                  备份脚本的清理逻辑有点迷,看不懂。

                  • 麻辣烫小精灵
                    麻辣烫小精灵 1

                    简直不要太爽,自动化运维真香,赞同。

                    • 鹰隼锐锐
                      鹰隼锐锐 1

                      网络监控这块没细说,有点吃瓜围观。

                      • 黑夜审判者
                        黑夜审判者 2

                        新手求问 fabric 连接失败咋排查,提问。

                          • 黄十二
                            黄十二 1

                            @ 黑夜审判者 fabric连不通先看ssh端口通不通,再检查密钥权限。

                          • 麻辣烫战神
                            麻辣烫战神 1

                            日志文件路径写死了吧,吐槽。

                              • 时光漫客
                                时光漫客 0

                                @ 麻辣烫战神 路径写死是挺坑的,建议改成参数传入。

                              • 鹦鹉绿绿
                                鹦鹉绿绿 1

                                这个方案可以试试,简洁又高效,简短点评。

                                  • WiFi信号是我的命
                                    WiFi信号是我的命 0

                                    @ 鹦鹉绿绿 简洁是简洁,就是怕后期加需求变坨。

                                  • 玉泉流金
                                    玉泉流金 1

                                    感觉还行

                                    • 噼噼啪啪
                                      噼噼啪啪 0

                                      这个备份脚本能定时跑吗?求cron配置例子。

                                      • 黑客猫
                                        黑客猫 2

                                        CPU告警那里间隔设1秒会不会太频繁了?

                                          • 黄铜灯
                                            黄铜灯 1

                                            @ 黑客猫 CPU采样1秒确实猛了点,咱这边跑一分钟能写满日志。

                                          • 旧巷茶香
                                            旧巷茶香 0

                                            我去,我们系统就缺这种监控脚本。

                                            • 绯夜
                                              绯夜 0

                                              之前搞过日志分析,正经踩过路径硬编码的坑。

                                              • 黑客
                                                黑客 1

                                                自动化运维真不是偷懒,是必须的。

                                                • 黄铜纽
                                                  黄铜纽 2

                                                  脚本看着简单,但部署时依赖容易炸,hhh

                                                  • 麋鹿邮差
                                                    麋鹿邮差 1

                                                    fabric连不上先看ssh-key配没配,之前折腾半小时才发现是这问题。

                                                    • 麒麟踏星
                                                      麒麟踏星 1

                                                      这个监控脚本能放crontab里每分钟跑吗?有点担心负载。

                                                      • 麒麟献瑞
                                                        麒麟献瑞 2

                                                        自动化运维不是偷懒?那为啥我感觉活越搞越多呢。

                                                        • 鹰高高
                                                          鹰高高 1

                                                          日志路径写死太危险了,不同环境都得改代码,吐了。

                                                          • ThunderFury
                                                            ThunderFury 0

                                                            备份清理用mtime+7真的靠谱?万一那天没跑岂不是丢了数据?

                                                            • 二进制狂人
                                                              二进制狂人 2

                                                              批量执行那块没加异常捕获,一台挂了整个脚本就停了。

                                                              • 书页间
                                                                书页间 1

                                                                标题写的是API设计,内容怎么全是运维脚本?

                                                              匿名

                                                              发表评论

                                                              匿名网友

                                                              拖动滑块以完成验证