Linux运维自动化常用的Python库

在 Linux 运维自动化中,以下 Python 库是核心工具,覆盖了从基础系统操作到高级自动化的各个方面:


1. 基础系统操作

  • os / sys :系统接口核心库

    • os:执行系统命令(os.system)、管理进程、环境变量、目录操作
    • sys:访问命令行参数、Python 解释器设置、退出程序
  • subprocess执行命令的标准库

    • 替代 os.system,可捕获输出、错误、返回码
    • 支持管道、超时控制、交互式命令
    python 复制代码
    import subprocess
    result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
  • shutil :高级文件操作

    • 文件复制、移动、删除、归档、磁盘空间

2. 文件和目录管理

  • pathlib现代路径处理

    • 面向对象的文件系统路径操作,替代 os.path
    python 复制代码
    from pathlib import Path
    Path('/etc').joinpath('config.conf').read_text()
  • glob :模式匹配文件查找

    • 支持 *.log**/*.py 通配符

3. 配置和日志

  • configparser :INI 配置文件解析
    • 读写 /etc/ 下的配置文件
  • json / yaml :结构化数据
    • json:处理 API 响应、配置文件
    • PyYAML:处理 Kubernetes、Ansible 的 YAML 文件
  • logging :日志记录标准库
    • 替代 print,支持分级、文件输出、轮转

4. 网络和远程操作

  • paramikoSSH 连接核心库

    • 远程执行命令、SFTP 传输
    python 复制代码
    import paramiko
    client = paramiko.SSHClient()
    client.connect(hostname='server', username='root')
  • requests :HTTP 客户端

    • 调用 REST API、监控接口、Webhook
  • socket :底层网络操作

    • 端口检查、简单网络服务

5. 系统监控和资源

  • psutil系统监控神器

    • 获取 CPU、内存、磁盘、网络、进程信息
    python 复制代码
    import psutil
    psutil.cpu_percent(interval=1)
    psutil.virtual_memory().percent
  • platform :系统信息

    • 获取主机名、系统版本、架构

6. 定时和并发

  • schedule :轻量定时任务

    • 替代 crontab 的 Python 方案
    python 复制代码
    import schedule
    schedule.every(10).minutes.do(backup_task)
  • threading / multiprocessing :并发执行

    • 批量操作多台服务器时使用
  • asyncio :异步 I/O

    • 高性能网络监控工具

7. 文本和数据处理

  • re :正则表达式
    • 解析日志、提取数据
  • pandas :数据分析
    • 处理监控数据、生成报表

8. DevOps 专用

  • fabric :简化远程操作
    • 封装了 SSH,更简洁的 API
  • ansible-runner :调用 Ansible
    • 在 Python 中执行 Ansible playbook
  • kubernetes :K8s 官方客户端
    • 管理 Pod、Service 等资源
  • docker :Docker SDK
    • 管理容器、镜像

9. 打包和部署

  • setuptools:打包工具
  • virtualenv / venv:虚拟环境

典型运维脚本结构示例

python 复制代码
#!/usr/bin/env python3
"""
Linux 运维脚本典型结构
"""
import logging
import subprocess
from pathlib import Path
import paramiko
import psutil
import schedule
import time

# 1. 配置日志
logging.basicConfig(level=logging.INFO)

# 2. 执行本地命令
def check_disk():
    result = subprocess.run(['df', '-h'], capture_output=True, text=True)
    return result.stdout

# 3. 使用 pathlib 处理路径
config_path = Path('/etc/app/config.yaml')
if config_path.exists():
    content = config_path.read_text()

# 4. 监控系统资源
def monitor_system():
    cpu = psutil.cpu_percent(interval=1)
    mem = psutil.virtual_memory().percent
    return f"CPU: {cpu}%, Memory: {mem}%"

# 5. 远程操作
def remote_backup(host):
    client = paramiko.SSHClient()
    client.connect(hostname=host, username='root')
    stdin, stdout, stderr = client.exec_command('tar -czf /backup/data.tar.gz /data')

# 6. 定时任务
schedule.every().day.at("02:00").do(remote_backup, 'server1')

if __name__ == '__main__':
    while True:
        schedule.run_pending()
        time.sleep(60)

库选择建议

  1. 新手入门 :先掌握 subprocesspathliboslogging
  2. 日常运维paramiko(远程)、psutil(监控)、requests(API)
  3. 高级自动化schedule(定时)、kubernetes(容器)、pandas(数据分析)

这些库组合使用,可以覆盖 90% 的 Linux 运维自动化需求。

相关推荐
程序设计实验室2 小时前
2026年的Linux桌面环境选择,哪些适合Debian服务器?
linux
Mu_chidonggua2 小时前
HAProxy
运维
牛马鸡niumasi2 小时前
Linux I/O重定向
linux·运维·服务器
老一岁2 小时前
linux vim及ps到tar包的详解
linux·运维·vim
qzhqbb2 小时前
OpenClaw(系统服务模式与独立进程模式)
linux·人工智能
linux修理工2 小时前
vi/vim 基本操作指南
运维·服务器
红牛vc2 小时前
Centos 7.9openssl 升级报错和python3版本安装
linux·运维·centos
高梦轩2 小时前
Linux系统安全
linux
Lsir10110_2 小时前
【Linux】网络基础——协议与网络传输基本原理
运维·服务器·网络