最新动态

Python运维工程师实战脚本全书

2025-01-27

Python 运维工程师必备脚本实战指南

运维工程师的工作离不开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, ras 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([sudoapt-getupdate])
    subprocess.run([sudoapt-getupgrade-y])
    print("系统更新完成。")

if __name__ == "__main__":
    update_system()

此脚本适用于Ubuntu或Debian系统,可用于定期更新软件包。


总结

上述四种脚本涵盖了运维工程师日常工作中的多个核心场景,代码简洁且实用,兼具灵活性与可扩展性。通过实践这些脚本,不仅可以提升运维效率,还能有效保障系统的稳定性。