首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >我让 AI 重写运维脚本,5 个场景平均提效 85%

我让 AI 重写运维脚本,5 个场景平均提效 85%

作者头像
行者全栈架构师
发布2026-07-06 16:58:46
发布2026-07-06 16:58:46
70
举报

以前写个巡检脚本要 40 分钟,现在 5 分钟。不是 AI 替代我,是它当了我的"专职代码副手"。

01 一个痛苦的周一

那天周一上午,领导扔过来三个需求:

•"把上周 Nginx 日志统计一下,Top IP 和响应码"•"磁盘巡检阈值调到 80%,出个报告"•"今天中午前把 20 台服务器做一次健康检查"

我刚写完一个脚本,又来一个。一个脚本 30-60 分钟,三个脚本我得干到下午。

这不是偶发——我每周平均写 5-8 个运维脚本,真正痛苦的不是不会写,而是写没什么技术含量的重复代码,还总在边界条件和调试上翻车

痛点

什么感觉

重复劳动

同类脚本换几个参数又写一遍,烦

边界遗漏

跑的时候才报错,忘了处理文件不存在、权限不足

调试耗时

写完调通要 2-3 轮,60% 时间花在调试上

文档缺失

脚本能跑但没注释,过两周自己都看不懂

后来我试了让 AI 生成脚本——不是"AI 写了我用",而是我提需求 → AI 出代码 → 我来审核。结果让我自己都吃了一惊。

02 五个真实场景的提效实录

场景 1:Nginx 日志统计 —— 35 分钟 → 3 分钟

需求:统计过去 1 小时 Nginx 访问日志中 Top 10 IP 和响应码分布。

以前:20 分钟写 + 15 分钟调试 awk/sort/uniq 组合,每次都要查 man 手册。

现在:1 分钟写 Prompt,2 分钟审核调整,搞定。

我的 Prompt

代码语言:javascript
复制
写一个 Bash 脚本,统计 Nginx access.log 中过去 1 小时的:
1. Top 10 访问 IP
2. HTTP 状态码分布
3. 平均响应时间
要求:支持参数化日志路径,包含异常处理,输出格式化表格

AI 生成的脚本(节选)

代码语言:javascript
复制
#!/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 手册还熟练。

场景 2:磁盘空间巡检 —— 30 分钟 → 5 分钟

需求:巡检所有挂载点,使用率超过 80% 告警,输出巡检报告。

AI 生成只用了 2 分钟 Prompt + 3 分钟调整告警格式:

代码语言:javascript
复制
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%

场景 3:批量健康检查 —— 45 分钟 → 7 分钟

需求:检查 20+ 台服务器的 HTTP 状态,超时 5 秒,输出汇总表。

传统写法最怕涉及 xargs/timeout/curl 组合的并发逻辑——一个超时处理不好,整个脚本就卡死。

AI 一次性生成,我只需要确认并发参数:

代码语言:javascript
复制
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%

场景 4:MySQL 慢查询分析 —— 60 分钟 → 11 分钟

需求:解析 MySQL 慢查询日志,提取 Top SQL 和执行时间分布。

这是 5 个场景中最费手的——mysqldumpslow 功能有限,自己写解析逻辑光调试就要 4-5 轮。AI 一次性搞定了参数化 + 异常处理 + 输出格式。

指标

手动编写

AI 生成

提升

编写时间

60 分钟

3 分钟

⬇️ 95%

调试轮次

4-5 轮

1-2 轮

⬇️ 70%

功能完整度

基本够用

含异常处理+参数化

⬆️

场景 5:Docker 容器清理 —— 25 分钟 → 3 分钟

代码语言:javascript
复制
# 用途: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%

03 汇总:39 分钟 → 5.8 分钟

场景

手动耗时

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 → 生成 → 审核 → 验证 → 上线。每个环节都不能跳。

04 三个 Prompt 技巧,让 AI 一次出货

技巧 1:结构化 Prompt——「角色+任务+要求+输出」四段式

代码语言:javascript
复制
角色:你是一个资深运维工程师
任务:编写 [具体脚本功能]
要求:
- 语言:Bash/Python
- 参数化:支持命令行参数
- 异常处理:包含错误检查和退出码
- 输出格式:表格化/JSON
- 注释:关键步骤中文注释

技巧 2:迭代优化——首轮 80% 可用,剩下 20% 针对性调

代码语言:javascript
复制
说明

技巧 3:让 AI 自测——生成脚本后马上写测试用例

代码语言:javascript
复制
为上面的脚本写一个测试用例,覆盖:
1. 正常输入场景
2. 文件不存在的异常场景
3. 权限不足的场景
4. 空输入场景

好的 Prompt = 好的脚本。投入 1 分钟写 Prompt,省 30 分钟调试。

05 踩坑指南:这 3 个坑我帮你踩过了

坑 1:AI 生成的脚本直接上生产

现象:AI 脚本本地跑通了,上生产后因为环境差异报错——Shell 版本不同、文件路径不一致、字符集不对。

解决:AI 生成 → 本地测试 → 预发布验证 → 生产执行,三步走不能省。

AI 加速的是"编写"环节,"验证"环节不可省略。

坑 2:Prompt 太笼统

现象:只说"写一个监控脚本",AI 输出非常通用,完全不实用。

解决:用四段式 Prompt 把需求说清楚。你对需求多清楚,AI 产出就多精准。

坑 3:忽略 Shell 兼容性

现象:Linux 跑通的脚本,在 macOS 上报错。

原因:macOS 的 date/sed/readlink 是 BSD 版,和 GNU 语法不同。

解决:在 Prompt 中标明目标系统,或脚本中加兼容判断。

运维脚本优先确保生产环境兼容,本地调试环境放第二。

06 总结:AI 辅助脚本开发的三个核心价值

编写时间 ⬇️ 85%:平均从 39 分钟降到 5.8 分钟•错误率 ⬇️ 83%:从 18% 降到 3%(AI 自带边界处理)•文档化 ✅:AI 自动生成注释,不再有"无文档脚本"

适用场景:模式固定的运维脚本(巡检、统计、清理、批量操作) 不适用场景:高度定制化的业务逻辑脚本、对性能要求极高的核心链路脚本

从今天开始,把每天第一个运维脚本的需求扔给 AI。花 1 分钟写 Prompt,5 分钟审核,剩下的时间,去解决那些真正需要你经验的问题。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 行者架构谈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 一个痛苦的周一
  • 02 五个真实场景的提效实录
    • 场景 1:Nginx 日志统计 —— 35 分钟 → 3 分钟
    • 场景 2:磁盘空间巡检 —— 30 分钟 → 5 分钟
    • 场景 3:批量健康检查 —— 45 分钟 → 7 分钟
    • 场景 4:MySQL 慢查询分析 —— 60 分钟 → 11 分钟
    • 场景 5:Docker 容器清理 —— 25 分钟 → 3 分钟
  • 03 汇总:39 分钟 → 5.8 分钟
  • 04 三个 Prompt 技巧,让 AI 一次出货
    • 技巧 1:结构化 Prompt——「角色+任务+要求+输出」四段式
    • 技巧 2:迭代优化——首轮 80% 可用,剩下 20% 针对性调
    • 技巧 3:让 AI 自测——生成脚本后马上写测试用例
  • 05 踩坑指南:这 3 个坑我帮你踩过了
    • 坑 1:AI 生成的脚本直接上生产
    • 坑 2:Prompt 太笼统
    • 坑 3:忽略 Shell 兼容性
  • 06 总结:AI 辅助脚本开发的三个核心价值
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档