在 Linux 运维自动化中,以下 Python 库是核心工具,覆盖了从基础系统操作到高级自动化的各个方面:
1. 基础系统操作
-
os/sys:系统接口核心库os:执行系统命令(os.system)、管理进程、环境变量、目录操作sys:访问命令行参数、Python 解释器设置、退出程序
-
subprocess:执行命令的标准库- 替代
os.system,可捕获输出、错误、返回码 - 支持管道、超时控制、交互式命令
pythonimport subprocess result = subprocess.run(['ls', '-l'], capture_output=True, text=True) - 替代
-
shutil:高级文件操作- 文件复制、移动、删除、归档、磁盘空间
2. 文件和目录管理
-
pathlib:现代路径处理- 面向对象的文件系统路径操作,替代
os.path
pythonfrom 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. 网络和远程操作
-
paramiko:SSH 连接核心库- 远程执行命令、SFTP 传输
pythonimport paramiko client = paramiko.SSHClient() client.connect(hostname='server', username='root') -
requests:HTTP 客户端- 调用 REST API、监控接口、Webhook
-
socket:底层网络操作- 端口检查、简单网络服务
5. 系统监控和资源
-
psutil:系统监控神器- 获取 CPU、内存、磁盘、网络、进程信息
pythonimport psutil psutil.cpu_percent(interval=1) psutil.virtual_memory().percent -
platform:系统信息- 获取主机名、系统版本、架构
6. 定时和并发
-
schedule:轻量定时任务- 替代 crontab 的 Python 方案
pythonimport 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)
库选择建议
- 新手入门 :先掌握
subprocess、pathlib、os、logging - 日常运维 :
paramiko(远程)、psutil(监控)、requests(API) - 高级自动化 :
schedule(定时)、kubernetes(容器)、pandas(数据分析)
这些库组合使用,可以覆盖 90% 的 Linux 运维自动化需求。