Python运维常用模块

Python 在自动化运维、巡检、发布、监控、资产管理和故障排查中常用模块速览。

Python 运维常用模块

Python 在运维领域常用于批量巡检、日志处理、接口调用、资产同步、告警通知、配置生成、发布脚本和云平台自动化。选择模块时,建议优先使用标准库解决基础问题,再按场景引入成熟的第三方库。

适用场景

  • 批量执行服务器巡检、端口检测和进程检查。
  • 调用监控、CMDB、工单、云平台和 Kubernetes API。
  • 解析日志、JSON、YAML、CSV、Excel 等运维数据。
  • 生成 Nginx、Prometheus、Kubernetes、Ansible 等配置文件。
  • 自动发送告警通知、日报、变更结果和巡检报告。
  • 编写发布、回滚、备份、清理和定时任务脚本。

标准库模块

模块常见用途
os读取环境变量、执行路径判断、遍历目录
pathlib更清晰地处理文件路径,推荐替代大量字符串拼接
shutil文件复制、目录清理、归档压缩
subprocess调用系统命令、执行脚本、获取命令输出
json解析接口返回、配置文件和日志中的 JSON
csv读写 CSV 格式资产清单、巡检结果
configparser读取 INI 配置文件
argparse编写命令行参数,适合运维脚本入口
logging输出结构化日志,替代简单的 print
datetime时间格式化、日志时间处理、任务时间窗口计算
ipaddress判断 IP、网段、地址包含关系
socketDNS 解析、端口连通性检测
concurrent.futures并发执行批量主机检查或接口请求
asyncio高并发异步任务,适合大量 IO 请求

执行系统命令

import subprocess

result = subprocess.run(
    ["df", "-h"],
    text=True,
    capture_output=True,
    check=True,
)

print(result.stdout)

批量端口检测

import socket
from concurrent.futures import ThreadPoolExecutor

hosts = ["10.0.0.11", "10.0.0.12", "10.0.0.13"]


def check_port(host: str, port: int = 22) -> tuple[str, bool]:
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client:
        client.settimeout(2)
        return host, client.connect_ex((host, port)) == 0


with ThreadPoolExecutor(max_workers=10) as executor:
    for host, ok in executor.map(check_port, hosts):
        print(host, "open" if ok else "closed")

配置与数据处理

模块安装常见用途
PyYAMLuv add pyyaml读取和生成 YAML 配置
Jinja2uv add jinja2渲染 Nginx、Prometheus、Kubernetes 模板
pydanticuv add pydantic校验配置、接口返回和脚本参数
python-dotenvuv add python-dotenv读取 .env 环境变量文件
openpyxluv add openpyxl读写 Excel 巡检表、资产表
pandasuv add pandas汇总、清洗和分析表格数据

渲染配置模板

from jinja2 import Template

template = Template("""
server {
    listen {{ port }};
    server_name {{ domain }};
}
""")

print(template.render(port=80, domain="example.com"))

HTTP 与 API 调用

模块安装常见用途
requestsuv add requests同步 HTTP 请求,简单稳定
httpxuv add httpx支持同步和异步请求
urllib.parse标准库URL 编码、解析和拼接

调用内部 API

import requests

response = requests.get(
    "https://cmdb.example.com/api/hosts",
    headers={"Authorization": "Bearer token"},
    timeout=10,
)
response.raise_for_status()

for host in response.json()["items"]:
    print(host["name"], host["ip"])

远程执行与批量运维

模块安装常见用途
paramikouv add paramikoSSH 登录、远程命令执行、SFTP 文件传输
fabricuv add fabric基于 SSH 的批量任务封装
ansible-runneruv add ansible-runner从 Python 调用 Ansible Playbook
psutiluv add psutil采集本机 CPU、内存、磁盘、进程信息

采集本机资源

import psutil

print("cpu:", psutil.cpu_percent(interval=1))
print("memory:", psutil.virtual_memory().percent)
print("disk:", psutil.disk_usage("/").percent)

容器、Kubernetes 与云平台

模块安装常见用途
dockeruv add docker操作 Docker 镜像、容器和日志
kubernetesuv add kubernetes调用 Kubernetes API
boto3uv add boto3调用 AWS API
aliyun-python-sdk-coreuv add aliyun-python-sdk-core调用阿里云 OpenAPI
tencentcloud-sdk-pythonuv add tencentcloud-sdk-python调用腾讯云 OpenAPI

查询 Kubernetes Pod

from kubernetes import client, config

config.load_kube_config()
api = client.CoreV1Api()

pods = api.list_namespaced_pod(namespace="default")
for pod in pods.items:
    print(pod.metadata.name, pod.status.phase)

监控、日志与告警

模块安装常见用途
prometheus-clientuv add prometheus-client暴露自定义 Exporter 指标
elasticsearchuv add elasticsearch查询 Elasticsearch 日志
redisuv add redis查询 Redis、写入缓存、实现简单锁
pymysqluv add pymysql查询 MySQL 运维数据
slack-sdkuv add slack-sdk发送 Slack 通知

暴露自定义指标

from prometheus_client import Gauge, start_http_server
import time

queue_depth = Gauge("demo_queue_depth", "Current queue depth")

start_http_server(9100)

while True:
    queue_depth.set(12)
    time.sleep(15)

命令行工具与脚本体验

模块安装常见用途
typeruv add typer快速编写友好的命令行工具
clickuv add click传统 CLI 框架,生态成熟
richuv add rich彩色输出、表格、进度条、异常格式化
tqdmuv add tqdm循环进度条
APScheduleruv add apschedulerPython 内部定时任务

简单 CLI

import typer

app = typer.Typer()


@app.command()
def check(host: str, port: int = 22):
    print(f"check {host}:{port}")


if __name__ == "__main__":
    app()

执行:

python ops.py check 10.0.0.11 --port 22

依赖管理建议

如果使用 uv

uv init ops-scripts
cd ops-scripts
uv add requests pyyaml rich typer
uv run python main.py

如果使用传统 requirements.txt

requests==2.32.3
PyYAML==6.0.2
rich==13.9.4
typer==0.15.1

安装依赖:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

选型建议

场景推荐模块
文件和目录处理pathlibshutil
命令行参数argparsetyper
执行系统命令subprocess
API 调用requestshttpx
YAML 配置PyYAML
配置模板Jinja2
批量并发concurrent.futuresasyncio
主机资源采集psutil
SSH 远程执行paramikofabric
Kubernetes 自动化kubernetes
云平台自动化boto3、各云厂商 SDK
自定义 Exporterprometheus-client
表格报告openpyxlpandas