Python运维工程师实战脚本全书
2025-01-27Python 运维工程师必备脚本实战指南
运维工程师的工作离不开Python脚本的支持,以提高工作效率。本文将通过实例讲解四种常用的脚本:系统监控、日志分析、文件备份以及系统更新。每个脚本都附有相应的代码和应用场景,帮助读者快速掌握。

1. 系统监控脚本
1.1 CPU 使用率监控
CPU 使用率的监控在服务器资源紧张时尤为重要。以下脚本会定期输出 CPU 使用率。
import psutil
import time
def monitor_cpu_usage(interval=1):
while True:
cpu_percent = psutil.cpu_percent(interval=interval)
print(f"当前 CPU 使用率: {cpu_percent}%")
time.sleep(interval)
if __name__ == "__main__":
# 每隔 5 秒监控一次 CPU 使用率
monitor_cpu_usage(interval=5)
此脚本使用 psutil
库,能够精确地获取 CPU 使用率,并支持自定义监控频率。
1.2 内存使用率监控
内存监控是保障系统稳定运行的重要环节。以下脚本展示了内存总量、可用量及使用率。
import psutil
import time
def monitor_memory_usage(interval=1):
while True:
mem_info = psutil.virtual_memory()
print(f"总内存: {mem_info.total / (1024 ** 3):.2f} GB")
print(f"可用内存: {mem_info.available / (1024 ** 3):.2f} GB")
print(f"内存使用率: {mem_info.percent}%")
time.sleep(interval)
if __name__ == "__main__":
# 每隔 5 秒监控一次内存使用情况
monitor_memory_usage(interval=5)
当服务器出现性能瓶颈时,可以使用此脚本实时了解内存负载。
2. 日志分析脚本
2.1 日志文件解析
日志文件中常常隐藏着系统异常的线索。以下脚本可以解析日志中的时间戳、级别和信息。
import re
def parse_log_file(log_file):
pattern = r\[(?P<timestamp>\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2})\] \[(?P<level>\w+)\] (?P<message>.*)
with open(log_file, r) as file:
for line in file:
match = re.match(pattern, line)
if match:
timestamp = match.group(timestamp)
level = match.group(level)
message = match.group(message)
print(f"时间: {timestamp}, 级别: {level}, 信息: {message}")
if __name__ == "__main__":
# 替换为实际日志文件路径
log_file = "/var/log/syslog"
parse_log_file(log_file)
正则表达式实现灵活解析,适合多种日志格式。
3. 文件备份脚本
3.1 定时文件备份
文件丢失可能导致严重后果,因此定期备份文件是防止数据丢失的关键措施。以下脚本会每隔一段时间自动备份指定文件。
import os
import shutil
import time
def backup_file(source_file, backup_dir, interval=3600):
whileTrue:
timestamp = time.strftime("%Y%m%d_%H%M%S")
backup_file = os.path.join(backup_dir, f"{timestamp}_{os.path.basename(source_file)}")
shutil.copy2(source_file, backup_file)
print(f"已创建备份: {backup_file}")
time.sleep(interval)
if __name__ == "__main__":
# 替换为实际文件路径和备份目录
source_file = "/path/to/source/file"
backup_dir = "/path/to/backup/directory"
backup_file(source_file, backup_dir, interval=3600)
企业级环境中,定期备份重要配置文件或数据库备份文件至关重要。
4. 系统更新脚本
4.1 自动化系统更新
保持系统更新有助于提升安全性与稳定性。以下脚本可以一键完成系统的更新操作。
import subprocess
def update_system():
print("正在更新系统...")
subprocess.run([sudo, apt-get, update])
subprocess.run([sudo, apt-get, upgrade, -y])
print("系统更新完成。")
if __name__ == "__main__":
update_system()
此脚本适用于Ubuntu或Debian系统,可用于定期更新软件包。
总结
上述四种脚本涵盖了运维工程师日常工作中的多个核心场景,代码简洁且实用,兼具灵活性与可扩展性。通过实践这些脚本,不仅可以提升运维效率,还能有效保障系统的稳定性。