
以前写个巡检脚本要 40 分钟,现在 5 分钟。不是 AI 替代我,是它当了我的"专职代码副手"。
那天周一上午,领导扔过来三个需求:
•"把上周 Nginx 日志统计一下,Top IP 和响应码"•"磁盘巡检阈值调到 80%,出个报告"•"今天中午前把 20 台服务器做一次健康检查"
我刚写完一个脚本,又来一个。一个脚本 30-60 分钟,三个脚本我得干到下午。
这不是偶发——我每周平均写 5-8 个运维脚本,真正痛苦的不是不会写,而是写没什么技术含量的重复代码,还总在边界条件和调试上翻车:
痛点 | 什么感觉 |
|---|---|
重复劳动 | 同类脚本换几个参数又写一遍,烦 |
边界遗漏 | 跑的时候才报错,忘了处理文件不存在、权限不足 |
调试耗时 | 写完调通要 2-3 轮,60% 时间花在调试上 |
文档缺失 | 脚本能跑但没注释,过两周自己都看不懂 |
后来我试了让 AI 生成脚本——不是"AI 写了我用",而是我提需求 → AI 出代码 → 我来审核。结果让我自己都吃了一惊。

需求:统计过去 1 小时 Nginx 访问日志中 Top 10 IP 和响应码分布。
以前:20 分钟写 + 15 分钟调试 awk/sort/uniq 组合,每次都要查 man 手册。
现在:1 分钟写 Prompt,2 分钟审核调整,搞定。
我的 Prompt:
写一个 Bash 脚本,统计 Nginx access.log 中过去 1 小时的:
1. Top 10 访问 IP
2. HTTP 状态码分布
3. 平均响应时间
要求:支持参数化日志路径,包含异常处理,输出格式化表格AI 生成的脚本(节选):
#!/bin/bash
LOG_PATH="${1:-/var/log/nginx/access.log}"
TIME_WINDOW=3600
if [ ! -f "$LOG_PATH" ]; then
echo "错误:日志文件 $LOG_PATH 不存在"
exit 1
fi
echo "========== Nginx 日志分析报告 =========="
echo "--- Top 10 访问 IP ---"
awk -v cutoff="$CUTOFF_TIME" '...' | sort -k2 -rn | head -10
echo "--- HTTP 状态码分布 ---"
awk '{...}' | sort -k2 -rn | head -10指标 | 手动编写 | AI 生成 | 提升 |
|---|---|---|---|
总耗时 | 35 分钟 | 3 分钟 | ⬇️ 91% |
这类数据处理脚本模式固定,AI 对 awk/sort/uniq 的组合比我翻 man 手册还熟练。
需求:巡检所有挂载点,使用率超过 80% 告警,输出巡检报告。
AI 生成只用了 2 分钟 Prompt + 3 分钟调整告警格式:
THRESHOLD="${1:-80}"
df -h | awk 'NR>1 {print $6, $5}' | while read -r mount use; do
use_num=$(echo "$use" | tr -d '%')
if [ "$use_num" -ge "$THRESHOLD" ]; then
echo "⚠️ [告警] $mount 使用率 ${use}"
else
echo "✅ [正常] $mount 使用率 ${use}"
fi
done指标 | 手动编写 | AI 生成 | 提升 |
|---|---|---|---|
总耗时 | 30 分钟 | 5 分钟 | ⬇️ 83% |
需求:检查 20+ 台服务器的 HTTP 状态,超时 5 秒,输出汇总表。
传统写法最怕涉及 xargs/timeout/curl 组合的并发逻辑——一个超时处理不好,整个脚本就卡死。
AI 一次性生成,我只需要确认并发参数:
check_health() {
local url=$1
local http_code=$(curl -s -o /dev/null -w "%{http_code}" \
--max-time "$TIMEOUT" "$url" 2>/dev/null)
if [ "$http_code" = "200" ]; then
printf "%-35s 正常 %dms\n" "$url" "$duration"
elif [ "$http_code" = "000" ]; then
printf "%-35s 超时\n" "$url"
else
printf "%-35s 异常 HTTP %s\n" "$url" "$http_code"
fi
}
export -f check_health
cat "$SERVER_LIST" | xargs -P 10 -I {} bash -c 'check_health "{}"'指标 | 手动编写 | AI 生成 | 提升 |
|---|---|---|---|
总耗时 | 45 分钟 | 7 分钟 | ⬇️ 84% |
需求:解析 MySQL 慢查询日志,提取 Top SQL 和执行时间分布。
这是 5 个场景中最费手的——mysqldumpslow 功能有限,自己写解析逻辑光调试就要 4-5 轮。AI 一次性搞定了参数化 + 异常处理 + 输出格式。
指标 | 手动编写 | AI 生成 | 提升 |
|---|---|---|---|
编写时间 | 60 分钟 | 3 分钟 | ⬇️ 95% |
调试轮次 | 4-5 轮 | 1-2 轮 | ⬇️ 70% |
功能完整度 | 基本够用 | 含异常处理+参数化 | ⬆️ |
# 用途:Docker 资源清理
# 参数:--dry-run 仅预览 | --force 跳过确认
# 1. 已停止的容器
STOPPED=$(docker ps -aq -f status=exited -f status=dead)
# 2. 悬空镜像
DANGLING=$(docker images -f "dangling=true" -q)
# 3. 清理7天前的数据卷
docker volume prune -f --filter "until=168h"
# 4. 预览模式
[ "$DRY_RUN" = true ] && echo "(预览模式)"指标 | 手动编写 | AI 生成 | 提升 |
|---|---|---|---|
总耗时 | 25 分钟 | 3 分钟 | ⬇️ 88% |
场景 | 手动耗时 | AI 耗时 | 提效 | 脚本行数 |
|---|---|---|---|---|
Nginx 日志统计 | 35 分钟 | 3 分钟 | ⬇️ 91% | 52 行 |
磁盘空间巡检 | 30 分钟 | 5 分钟 | ⬇️ 83% | 35 行 |
批量健康检查 | 45 分钟 | 7 分钟 | ⬇️ 84% | 45 行 |
MySQL 慢查询 | 60 分钟 | 11 分钟 | ⬇️ 82% | 68 行 |
Docker 清理 | 25 分钟 | 3 分钟 | ⬇️ 88% | 55 行 |
平均 | 39 分钟 | 5.8 分钟 | ⬇️ 85% | — |
AI 辅助脚本开发不是"AI 生成就直接用"——而是一套完整的流程:需求 → Prompt → 生成 → 审核 → 验证 → 上线。每个环节都不能跳。

角色:你是一个资深运维工程师
任务:编写 [具体脚本功能]
要求:
- 语言:Bash/Python
- 参数化:支持命令行参数
- 异常处理:包含错误检查和退出码
- 输出格式:表格化/JSON
- 注释:关键步骤中文注释说明为上面的脚本写一个测试用例,覆盖:
1. 正常输入场景
2. 文件不存在的异常场景
3. 权限不足的场景
4. 空输入场景好的 Prompt = 好的脚本。投入 1 分钟写 Prompt,省 30 分钟调试。

现象:AI 脚本本地跑通了,上生产后因为环境差异报错——Shell 版本不同、文件路径不一致、字符集不对。
解决:AI 生成 → 本地测试 → 预发布验证 → 生产执行,三步走不能省。
AI 加速的是"编写"环节,"验证"环节不可省略。
现象:只说"写一个监控脚本",AI 输出非常通用,完全不实用。
解决:用四段式 Prompt 把需求说清楚。你对需求多清楚,AI 产出就多精准。
现象:Linux 跑通的脚本,在 macOS 上报错。
原因:macOS 的 date/sed/readlink 是 BSD 版,和 GNU 语法不同。
解决:在 Prompt 中标明目标系统,或脚本中加兼容判断。
运维脚本优先确保生产环境兼容,本地调试环境放第二。

•编写时间 ⬇️ 85%:平均从 39 分钟降到 5.8 分钟•错误率 ⬇️ 83%:从 18% 降到 3%(AI 自带边界处理)•文档化 ✅:AI 自动生成注释,不再有"无文档脚本"
适用场景:模式固定的运维脚本(巡检、统计、清理、批量操作) 不适用场景:高度定制化的业务逻辑脚本、对性能要求极高的核心链路脚本
从今天开始,把每天第一个运维脚本的需求扔给 AI。花 1 分钟写 Prompt,5 分钟审核,剩下的时间,去解决那些真正需要你经验的问题。