跳到主要内容

运维常见的python脚本

最后更新于:

运维常见的python脚本

请给我列出运维 常用的 python脚本 有哪些?

运维高频使用的Python脚本清单(按场景分类,附核心用途)

运维Python脚本的核心价值是替代重复手工操作、自动化巡检/处理、快速排查问题,以下按「日常高频程度」和「实用价值」分类,每个脚本都对应运维真实场景,学会就能落地用,成就感拉满。

一、系统资源监控类(最基础、每天都能用)

这类脚本是运维入门首选,语法简单、效果直观,能快速感知服务器状态。

脚本名称核心功能适用场景核心依赖库
实时资源监控脚本监控CPU/内存/磁盘/网络使用率,输出可视化结果(如百分比、告警阈值)日常巡检、服务器负载异常排查psutil(核心)
端口存活检测脚本检测指定IP:端口是否通(如80/443/3306),批量检测多端口/多服务器业务端口可用性巡检、故障快速定位socket、threading
进程监控/重启脚本检测指定进程(如nginx/mysql)是否运行,挂了自动重启并记录日志保障核心服务不宕机、无人值守场景psutil、subprocess
系统负载统计脚本统计1/5/15分钟负载、TCP连接数、僵尸进程数,生成简易报告服务器性能瓶颈排查、负载过高预警psutil、subprocess

示例(端口存活检测脚本):

 1import socket
 2import time
 3
 4# 批量检测端口
 5def check_port(ip, port):
 6    try:
 7        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 8        s.settimeout(2)  # 超时2秒
 9        result = s.connect_ex((ip, port))
10        s.close()
11        return "✅ 通" if result == 0 else "❌ 不通"
12    except Exception as e:
13        return f"❌ 异常:{str(e)}"
14
15# 待检测的服务器+端口列表
16check_list = [("192.168.1.10", 80), ("192.168.1.10", 3306), ("www.baidu.com", 443)]
17
18for ip, port in check_list:
19    status = check_port(ip, port)
20    print(f"{ip}:{port} - {status}")
21    time.sleep(0.5)

二、文件/目录管理类(日常运维高频)

处理文件是运维最基础的操作,这类脚本能解决「文件杂乱、重复操作、空间不足」等问题。

脚本名称核心功能适用场景核心依赖库
批量重命名/移动脚本按规则重命名文件(如加前缀/日期)、批量移动指定类型文件(如.log)日志文件整理、备份文件归类os、shutil
大文件清理脚本查找指定目录下大于N MB的文件,或N天未修改的文件,支持预览/删除服务器磁盘空间不足、清理无用大文件os、datetime
文件内容替换脚本批量替换多个文件中的指定字符串(如配置文件中的IP/端口)批量修改配置、替换违规字符os、fileinput
目录同步脚本本地目录和远程目录(或多服务器目录)增量同步,避免重复拷贝配置文件同步、代码包分发shutil、paramiko

三、批量服务器运维类(多机器管理核心)

当服务器数量>3台时,这类脚本能节省80%的手工操作时间,是运维自动化的核心。

脚本名称核心功能适用场景核心依赖库
SSH批量执行命令脚本批量登录多台服务器,执行相同命令(如查看负载、重启服务),收集执行结果多服务器统一巡检、批量操作paramiko、pexpect
SSH批量上传/下载脚本批量向多台服务器上传文件(如配置包)、或从多台服务器下载日志/备份文件批量分发配置、收集日志paramiko
服务器资产采集脚本批量采集服务器IP、CPU、内存、磁盘、系统版本等信息,生成Excel资产表机房资产盘点、服务器信息统一管理paramiko、openpyxl
批量修改服务器密码脚本批量修改多台服务器的用户密码(如root),记录修改结果密码定期更换、合规要求paramiko

示例(SSH批量执行命令简化版):

 1import paramiko
 2
 3# 服务器列表(建议用配置文件存储,避免硬编码密码)
 4servers = [
 5    {"host": "192.168.1.10", "user": "root", "pwd": "your_pwd"},
 6    {"host": "192.168.1.11", "user": "root", "pwd": "your_pwd"},
 7]
 8cmd = "df -h / | grep / | awk '{print $5}'"  # 查看根目录使用率
 9
10for server in servers:
11    ssh = paramiko.SSHClient()
12    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
13    try:
14        ssh.connect(server["host"], username=server["user"], password=server["pwd"], timeout=5)
15        stdin, stdout, stderr = ssh.exec_command(cmd)
16        usage = stdout.read().decode("utf-8").strip()
17        print(f"{server['host']} 根目录使用率:{usage}")
18    except Exception as e:
19        print(f"{server['host']} 连接失败:{str(e)}")
20    finally:
21        ssh.close()

四、日志分析/处理类(故障排查必备)

日志是运维排查问题的核心,这类脚本能从海量日志中快速定位问题。

脚本名称核心功能适用场景核心依赖库
日志关键词过滤脚本过滤日志中指定关键词(如ERROR/Exception/IP),输出匹配行和行数故障排查、定位错误原因os、re
日志按时间切割脚本按小时/天切割超大日志文件(如超过10G的nginx日志),避免单文件过大日志归档、方便查看/分析os、datetime
日志统计分析脚本统计日志中访问量TOP10的IP、接口响应时间、404/500错误数网站访问分析、接口故障定位re、collections
日志脱敏脚本替换日志中的敏感信息(如手机号、身份证、密码),符合合规要求日志对外分享、归档前脱敏re

五、自动化备份类(数据安全核心)

备份是运维的「生命线」,这类脚本能实现无人值守备份,避免数据丢失。

脚本名称核心功能适用场景核心依赖库
目录/文件备份脚本按日期打包目录(如/etc/nginx),自动删除N天前的旧备份配置文件备份、代码包备份shutil、datetime
MySQL自动备份脚本定时备份MySQL数据库,支持压缩、上传到远程存储(如S3/OSS)数据库数据备份、灾备恢复subprocess、requests
增量备份脚本只备份新增/修改的文件(基于文件修改时间),节省磁盘空间大目录备份、频繁更新的文件备份os、shutil
备份校验脚本校验备份文件的完整性(如MD5校验),确保备份可用备份后验证、避免备份损坏hashlib

六、网络/接口监控类(业务可用性保障)

保障业务对外可用,这类脚本能实时监控接口/服务状态,提前发现问题。

脚本名称核心功能适用场景核心依赖库
HTTP/HTTPS接口监控脚本监控接口响应码、响应时间、返回内容,异常则告警业务接口可用性巡检、API监控requests
DNS解析检测脚本检测域名解析是否正常,对比多个DNS服务器的解析结果域名解析故障排查、DNS污染检测dns.resolver
网络延迟/丢包检测脚本批量ping多台服务器,统计延迟和丢包率,输出检测报告网络故障排查、机房网络质量检测subprocess
TCP/UDP服务监控脚本检测TCP/UDP服务是否正常响应(如DNS/Redis)底层服务可用性监控socket

七、告警通知类(问题及时发现)

监控的最终目的是「发现问题并通知」,这类脚本是监控闭环的关键。

脚本名称核心功能适用场景核心依赖库
钉钉/企业微信告警脚本监控异常时,自动发送告警消息到钉钉群/企业微信群实时告警、无人值守场景requests
邮件告警脚本发送带附件的告警邮件(如日志片段、监控报告)正式告警、留存告警记录smtplib、email
短信告警脚本调用短信API,发送告警短信到运维人员手机紧急故障告警、核心服务异常requests
告警聚合脚本合并相同类型的告警,避免告警轰炸(如5分钟内只发一次相同告警)高频率监控场景、减少无效告警time、collections

八、进阶运维脚本(规模化/现代化运维)

当基础脚本用熟后,可进阶学习这类,适配更大规模的运维场景:

  1. 配置管理脚本:解析YAML/JSON配置文件,统一管理服务器配置(依赖:pyyaml、json);
  2. 定时任务脚本:结合schedule库,实现脚本定时执行(如每小时巡检、每天备份);
  3. 容器运维脚本:用Docker SDK管理容器(启动/停止/监控容器、查看日志);
  4. K8s运维脚本:用kubernetes库操作K8s集群(查看Pod状态、创建Deployment);
  5. Prometheus监控脚本:自定义Exporter,将业务指标接入Prometheus监控;
  6. 运维Web小工具:用Flask/FastAPI做简易运维平台(如服务器信息查询、批量操作)。

总结

  1. 优先掌握:系统监控、文件管理、批量SSH执行这三类脚本(覆盖80%日常运维场景),学一个用一个,快速积累成就感;
  2. 核心依赖库:psutil(系统监控)、paramiko(SSH)、requests(网络/接口)、os/shutil(文件)是运维Python的「四大核心库」,必须吃透;
  3. 学习技巧:先写「能用的脚本」(不追求代码优雅),再逐步优化(加日志、异常处理、配置文件),边用边改的过程就是最好的学习。

如果需要某一类脚本的完整可运行版本(比如带配置文件、异常处理、日志记录的生产级版本),可以告诉我具体需求,我会针对性编写。

最新文章