Shell 脚本编程从入门到精通

爪 爪
爪 爪
爪 爪
编辑
34
文章
0
粉丝
安全运维评论28字数 553阅读1分50秒阅读模式

shell 脚本编程从入门到精通

摘要: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-04-11

历年同日文章
4 月
12
 
爪 爪
  • 本文由 爪 爪 发表于2026年4月12日 01:11:34
匿名

发表评论

匿名网友

拖动滑块以完成验证