Python系统运维自动化教程_批量操作与脚本管理案例

17次阅读

python运维自动化核心是理清连接、配置、日志、状态四件事:用paramiko/fabric3实现批量命令与文件分发,YAML管理主机配置,Logging统一日志,sqlite/cron+锁文件做状态追踪。

Python系统运维自动化教程_批量操作与脚本管理案例

Python 是系统运维自动化的重要工具,尤其适合批量操作和脚本管理。关键不在于写多复杂的代码,而在于用对模块、理清流程、做好异常控制和结果反馈。

批量执行远程命令:paramiko + 并发控制

用 paramiko 可以安全地通过 ssh 批量登录服务器执行命令。但直接 for 循环串行执行效率低,建议配合 threading 或 concurrent.futures 提升并发度。

  • 先用配置文件(如 YAML)管理主机列表、用户、密钥路径或密码
  • 每个连接单独建立,执行完立即 close,避免连接
  • 捕获 AuthenticationException、SSHException 等常见异常,记录失败主机和原因
  • 命令输出建议统一结构化返回(如字典:{“host”: “10.0.1.5”, “status”: “success”, “output”: “…”})

批量文件分发与同步:fabric3 或 scp + subprocess

fabric3(Python 3 兼容版 fabric)封装了 SSH 和 SFTP 操作,适合上传、下载、远程运行脚本等场景。若仅需简单分发,也可用 subprocess 调用系统 scp 命令,更轻量。

  • fabric3 的 Connection 对象支持 run()、put()、get() 方法,可链式调用
  • 大文件分发前建议校验 md5sum,put() 后在远端执行校验并返回结果
  • 避免在远程直接覆盖关键配置文件,可先备份为 .bak 再更新
  • 使用 sudo=True 时注意密码输入方式(env.password / env.key_filename / invoke Responder)

运维脚本统一管理:入口+配置+日志三件套

单个脚本好维护,多个脚本混在一起就容易混乱。推荐按“主入口脚本 + 配置目录 + 日志模块”组织结构。

立即学习Python免费学习笔记(深入)”;

  • 主脚本(如 ops_runner.py)只负责解析参数(argparse)、加载配置、调度子模块
  • 配置分离成 conf/ 目录,支持环境区分(dev.yaml / prod.yaml),用 PyyAML 加载
  • 日志统一用 logging 配置:按天轮转、记录到文件、同时输出到终端、带 host 和 task 标签
  • 每个功能封装为独立函数或类(如 BackupManager、ServiceChecker),便于单元测试和复用

定时任务与状态追踪:结合 cron + 状态文件或 SQLite

自动化脚本常需周期性运行,但单纯丢进 crontab 容易失控。建议增加轻量状态追踪机制。

  • 每次运行前检查上一次是否完成(通过锁文件或数据库中的 status 字段)
  • 关键步骤写入 SQLite(轻量、无需服务、支持事务),例如记录“nginx_restart_20240520”执行时间与结果
  • cron 中调用 Python 脚本时加超时控制(timeout 300 /usr/bin/python3 /opt/ops/check_disk.py)
  • 失败时自动触发邮件或企业微信通知(可用 smtplib 或 requests 调用 webhook)

不复杂但容易忽略。把连接、配置、日志、状态四件事理清楚,批量运维脚本就能稳定跑起来。

text=ZqhQzanResources