Python 自动化脚本实战:系统监控、备份与任务调度
利用 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 运维开发与批量处理技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









