5 种常见运维场景的 Python 脚本实现
前言
Python 因其丰富的第三方库和强大的自动化能力,在运维领域被广泛用于实现各种自动化任务。通过编写 Python 脚本,运维工程师可以连接远程服务器、解析日志、监控系统状态、批量部署软件以及执行备份恢复任务,从而大大提高效率并减少人工干预的错误率。
本文介绍了五种常见的运维自动化场景及其 Python 脚本实现方案。包括使用 paramiko 连接远程服务器执行命令,利用 re 模块解析日志提取错误信息,通过 psutil 监控 CPU 状态并发送邮件警报,借助 fabric 库批量部署软件,以及使用 shutil 执行文件备份。文章提供了相应的代码示例和依赖说明,旨在帮助运维人员提高自动化水平,减少人工操作风险。

Python 因其丰富的第三方库和强大的自动化能力,在运维领域被广泛用于实现各种自动化任务。通过编写 Python 脚本,运维工程师可以连接远程服务器、解析日志、监控系统状态、批量部署软件以及执行备份恢复任务,从而大大提高效率并减少人工干预的错误率。
连接远程服务器并执行命令是运维的基础操作。在 Python 中,可以使用 paramiko 库来实现 SSH 连接。
依赖安装:
pip install paramiko
示例代码:
import paramiko
# 创建 SSH 客户端
ssh = paramiko.SSHClient()
# 设置为自动接受服务器的 hostkey(生产环境建议配置已知主机列表)
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
# 连接远程服务器
ssh.connect(hostname='remote.server.com', username='user', password='password')
# 执行命令
stdin, stdout, stderr = ssh.exec_command('ls -l /tmp')
print(stdout.read().decode())
except Exception as e:
print(f"连接失败:{e}")
finally:
ssh.close()
解析日志文件并提取关键信息对于故障排查至关重要。Python 内置的 re 模块提供了强大的正则表达式工具。
示例代码:
import re
# 读取日志文件
with open('log.txt', 'r', encoding='utf-8') as f:
log = f.read()
# 使用正则表达式匹配错误信息
errors = re.findall(r'ERROR:\s+(.*)', log)
# 打印出所有匹配到的错误信息
for error in errors:
print(error)
在实际应用中,可以根据需要构建更复杂的正则表达式,或使用 loguru 等高级日志库来简化处理流程。
监控系统资源使用情况并及时报警是保障服务稳定性的关键。可以使用 psutil 库获取系统信息,结合 smtplib 发送邮件通知。
依赖安装:
pip install psutil
示例代码:
import psutil
import smtplib
from email.mime.text import MIMEText
# 获取 CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
threshold = 80
if cpu_percent > threshold:
try:
# 建立 SMTP 连接
server = smtplib.SMTP('smtp.example.com', 25)
server.login('alert_user', 'password')
# 构造邮件内容
msg = MIMEText(f'CPU 使用率超过 {threshold}%:当前使用率为 {cpu_percent}%')
msg['Subject'] = '警报:高 CPU 使用率'
msg['From'] = '[email protected]'
msg['To'] = '[email protected]'
# 发送邮件
server.send_message(msg)
server.quit()
except Exception as e:
print(f"发送警报失败:{e}")
批量部署软件或更新系统是运维的高频需求。fabric 库提供了便捷的命令行工具和远程执行功能。
依赖安装:
pip install fabric
示例代码:
from fabric import task
@task
def update_system(c):
c.run('apt-get update')
c.run('apt-get upgrade -y')
# 实际使用时需配置 hosts 列表
# python deploy.py --hosts host1,host2 update_system
此外,也可以使用 Ansible 或 Puppet 等配置管理工具配合 Python 脚本实现更复杂的编排。
数据备份是防止数据丢失的最后防线。Python 的 shutil 库提供了高效的文件复制功能。
示例代码:
import shutil
import os
from datetime import datetime
# 定义源路径和目标路径
source_dir = '/path/to/dir'
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
dest_dir = f'/path/to/backup/{timestamp}'
# 确保目标目录存在
os.makedirs(dest_dir, exist_ok=True)
# 备份整个目录
shutil.copytree(source_dir, dest_dir)
print(f"备份完成:{dest_dir}")
Python 在运维领域有着广泛的应用,除了上述五个场景外,还可用于自动化测试(pytest)、数据分析(pandas)及机器学习(scikit-learn)等方向。掌握 Python 脚本编写能力,能帮助运维工程师更高效地完成任务,提升职业竞争力。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online