Python 自动化脚本实战:系统监控、备份与任务调度

季宁
季宁
发布时间:2026-10-11 | 2人浏览过
原创

利用 Python 标准库与第三方插件,可以快速搭建文件备份、系统监控、网络巡检、软件部署、数据清洗及定时任务等自动化工作流。通过合理组合 shutil、psutil、requests、pandas 与 schedule 等模块,开发者能够替代重复性手工操作,提升服务器管理与日常运维效率。

环境与依赖准备

基础运行环境需支持 Python 3.8 及以上版本,以兼容文件复制时的新特性。涉及网络探测、性能采集与数据运算需预先通过包管理器安装:pip install requests pandas psutil schedule。邮件发送功能属于业务逻辑层,实际部署前需向服务商申请独立的 SMTP 端口、授权密码或 App Key。

第1步:实现文件与目录自动备份

目的:将源目录及其子树完整同步至目标位置,适用于日志归档或重要资料定期快照。

import shutil
import os

source_folder = '/path/to/source'
destination_folder = '/path/to/destination'

def backup_folder(src, dst):
    if not os.path.exists(dst):
        os.makedirs(dst)
    for item in os.listdir(src):
        s = os.path.join(src, item)
        d = os.path.join(dst, item)
        if os.path.isdir(s):
            # dirs_exist_ok=True 避免覆盖已存在文件夹时中断
            shutil.copytree(s, d, dirs_exist_ok=True)
        else:
            shutil.copy2(s, d)

backup_folder(source_folder, destination_folder)

完成判断:脚本执行完毕无回溯堆栈,目标路径下文件数量、目录层级与原址一致,且修改时间与访问元数据保持同步。

第2步:编写系统资源监控告警

目的:抓取主机 CPU 瞬时负载,突破阈值时触发通知通道。

import psutil
# import smtplib ... # 邮件发送需补充完整凭证逻辑

def check_cpu_usage():
    cpu_percent = psutil.cpu_percent(interval=1)
    if cpu_percent > 80:
        print(f"⚠️ CPU Usage High: {cpu_percent}%")
        # send_alert(f"CPU Usage High: {cpu_percent}%")

check_cpu_usage()

完成判断:终端打印当前采样占比。超过 80% 时输出告警标识。生产环境请将预留的邮件函数接入真实 SMTP 客户端(包含发件箱域名校验、SSL 握手与附件流写入)。

第3步:执行网络连通性巡检

目的:轮询指定端点的 HTTP 响应,用于外部接口或 CDN 健康度排查。

import requests

def check_website(url):
    try:
        response = requests.get(url, timeout=10)
        response.raise_for_status()
        print(f"✅ {url} is up.")
    except requests.RequestException as e:
        print(f"❌ {url} is down: {e}")

check_website("http://example.com")

完成判断:状态码落在 200~299 区间时记录上线日志;遭遇 DNS 解析失败、连接超时或服务端 4xx/5xx 错误时,统一捕获 RequestException 并输出诊断信息。

第4步:调用包管理器自动部署软件

目的:借助 Python 封装底层 Shell 指令,实现研发环境的批量初始化。

⚠️ 风险提示:本示例包含 sudo 提权指令。网络抖动或磁盘空间不足可能中断安装流程。务必先在隔离节点验证干跑路径,并确认已导出关键数据备份清单。
import subprocess

def install_git():
    # 刷新本地软件源缓存
    subprocess.run(['sudo', 'apt-get', 'update'], check=True)
    # 自动应答式安装 git 及关联依赖
    subprocess.run(['sudo', 'apt-get', '-y', 'install', 'git'], check=True)

install_git()

完成判断:子进程返回码为 0 且未抛 CalledProcessError,可在终端执行 git --version 确认可执行文件已注册至系统 PATH。

第5步:自动化 CSV 数据处理

目的:解析二维表格结构,计算描述性统计量,为报表导出或模型训练提供清洗后数据集。

import pandas as pd

def process_csv(file_path):
    df = pd.read_csv(file_path)
    # 逐列输出计数、均值、标准差、分位数与极值
    summary = df.describe()
    print(summary)
    # summary.to_parquet('analysis_output.parquet')

process_csv('data.csv')

完成判断:控制台渲染对齐的数值矩阵。若原始表头混入文本字段,describe() 会自动降级显示,需依据业务词典提前执行类型转换或空值填充。

第6步:配置周期任务调度

目的:维持单一线程按固定间隔重放回调逻辑,适合作为独立守护进程驻留内存。

import schedule
import time

def job():
    print("🕒 Scheduled task executed successfully!")

schedule.every(10).seconds.do(job)

print("🟢 Scheduler started. Press Ctrl+C to stop.")
while True:
    schedule.run_pending()
    time.sleep(1)

完成判断:主循环每秒扫面一次待办队列,命中时间窗口即触发 job()。安全终止方式为发送 SIGINT(Ctrl + C)释放 GIL 锁。

运行排错与优化建议

上述片段已覆盖文件系统镜像、硬件探针采集、接口拨测、环境装配、数据计算与进程控制六大核心链路。落地企业级管线时,建议将绝对路径与密钥抽离至 .env 配置中心,全面替换 print 调用并接入 logging.handlers.RotatingFileHandler 以便日志轮转。针对长周期运行的调度器,官方更推荐使用操作系统原生定时器(Linux systemd.timer 或 cron.d),可获得信号拦截、资源配额管控与重启自愈能力,彻底规避 Python 进程意外挂死导致的任务丢失。

以上就是基于 Python 构建系统级自动化脚本的详细内容,更多关于 Python 运维开发与批量处理技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表