快捷菜单
常用功能一站直达
更多功能请点顶栏「快捷菜单」
请给我列出运维 常用的 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 |
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 |
当基础脚本用熟后,可进阶学习这类,适配更大规模的运维场景:
schedule库,实现脚本定时执行(如每小时巡检、每天备份);kubernetes库操作K8s集群(查看Pod状态、创建Deployment);如果需要某一类脚本的完整可运行版本(比如带配置文件、异常处理、日志记录的生产级版本),可以告诉我具体需求,我会针对性编写。
日历 · 精选 · 友链 · 更多
如果内容对你有帮助,欢迎请我喝杯咖啡 ☕



One的公众号
爱折腾博客的小白