AI 生成的清理 USB 设备脚本导致硬盘数据丢失的教训 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
83f420984
V2EX    程序员

AI 生成的清理 USB 设备脚本导致硬盘数据丢失的教训

  •  5
     
  •   83f420984 326 天前 via iPhone 8327 次点击
    这是一个创建于 326 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚刚指挥 AI 帮我写一个清理挂载 usb 设备的 linux 脚本,执行完脚本发现日志不对劲,直接把我硬盘给清空了
    第 1 条附言    326 天前

    本意是想让AI优化 cleanup_mounts 函数。

    img

    最终给的代码结果是:

    cleanup_mounts() { log "开始清理挂载点..." # 确保 MOUNT_BASE 存在且非空 if [ -z "$MOUNT_BASE" ] || [ "$MOUNT_BASE" = "/" ]; then log "错误:挂载基础目录未定义或无效" return 1 } local mounted_usb=$(findmnt -n -t fuseblk,vfat,ntfs,exfat,ext4 -o TARGET | grep "^$MOUNT_BASE/") if [ -z "$mounted_usb" ]; then log "没有找到需要清理的挂载点" else for mount_point in $mounted_usb; do log "正在处理挂载点: $mount_point" # 先尝试安全卸载 if umount -l "$mount_point" 2>/dev/null; then log "成功安全卸载 $mount_point" continue fi local using_pids=$(fuser -m "$mount_point" 2>/dev/null) if [ -n "$using_pids" ]; then log "发现正在使用此挂载点的进程: $using_pids" log "正在终止这些进程..." # 先发送 SIGTERM 信号 fuser -k -TERM -m "$mount_point" >/dev/null 2>&1 sleep 2 if fuser -m "$mount_point" >/dev/null 2>&1; then log "使用 SIGKILL 强制终止进程" fuser -k -KILL -m "$mount_point" >/dev/null 2>&1 sleep 1 fi fi # 最后尝试强制卸载 if umount -f "$mount_point" 2>/dev/null; then log "成功强制卸载 $mount_point" else log "警告:无法卸载 $mount_point" fi done fi # 清理所有遗留的挂载点目录 find "$MOUNT_BASE" -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \; # 重建并设置正确的权限 mkdir -p "$MOUNT_BASE" chmod 777 "$MOUNT_BASE" chown "$SMB_USER:$SMB_GROUP" "$MOUNT_BASE" # 重启 Samba 服务以确保共享正常 systemctl restart smbd nmbd } 
    第 2 条附言    326 天前
    执行脚本后反馈的日志:

    ```bash
    root@armbian:~# sudo /usr/local/bin/usb-mount.sh cleanup
    开始清理挂载点...
    没有找到需要清理的挂载点
    清理遗留目录...
    rm: cannot remove '/mnt/usb/0005C423000F6D5D/Apps/iOS': Directory not empty
    rm: cannot remove '/mnt/usb/0005C423000F6D5D/Books': Directory not empty
    rm: cannot remove '/mnt/usb/0005C423000F6D5D/Movies/Assassination.2015.BluRay.iPad.1080p.AAC.x264-LHD': Directory not empty
    重建挂载基础目录...
    重启 Samba 服务...
    清理操作完成
    ```
    68 条回复    2024-11-19 13:14:30 +08:00
    Xu3Xan89YsA7oP64
        1
    Xu3Xan89YsA7oP64  
       326 天前   1
    论测试的重要性
    wukongkong
        2
    wukongkong  
       326 天前 via Android   2
    笑死了
    COW
        3
    COW  
       326 天前 via Android
    哈哈,是你提问的方式不对,还是 AI 被污染了
    szdosar
        4
    szdosar  
       32 天前
    自己手动,显示隐藏设备,手动删除灰色的设备项。
    msg7086
        5
    msg7086  
       326 天前   1
    拿到脚本不检查内容直接运行是这样的。
    cybort
        6
    cybort  
       326 天前 via Android   7
    你如果直接在论坛找人要脚本,结果也是这样。
    MFWT
        7
    MFWT  
       326 天前   1
    请谨慎使用代码 来自 Gemini 的提醒
    MossFox
        8
    MossFox  
       326 天前   5
    "清理挂载 usb 设备的 linux 脚本"

    你就说清没清理吧
    NoOneNoBody
        9
    NoOneNoBody  
       326 天前   5
    对 AI 用词要准确
    要么用“移除没有挂载的”,要么用“整理”,“清理”是多涵义的
    不久前曾说过,“自从用了 AI ,就知道语文的重要性了”,V 友答:“英语也是”
    ferock
        10
    ferock  
    PRO
       326 天前
    真把 AI 当懒人良药了???

    AI 只是一个怎么逗你开心怎么说话的策略工具而已。。。
    现在把 AI 当谷歌,当一言九鼎,这已经是歪楼了。

    还是懒作怪啊,更不需要自己担责,怎么也不想一下是自己敲的回车
    sampeng
        11
    sampeng  
       326 天前   1
    测试不是让你生成了直接就运行。。是把命令改成 print 。。确定没问题再改成真实命令。。。
    flyqie
        12
    flyqie  
       326 天前 via Android
    不意外,ai 很多时候写的是非常离谱的,自己不检查那肯定要吃亏的。
    jackchenli
        13
    jackchenli  
       326 天前
    我觉得这个例子给当今职场拿着 ai 结果当论据的人一个典范
    VZEXEZVzzz
        14
    VZEXEZVzzz  
       326 天前 via iPhone
    要不分享一下脚本看看
    ano
        15
    ano  
       326 天前
    太相信 Ai 了吧
    EZ4ZZW
        16
    EZ4ZZW  
       326 天前
    我猜是清理文件系统、块设备格式化之类的命令,直接怼到了系统盘上,然后还加了 `sudo`。
    yolee599
        17
    yolee599  
       326 天前 via Android
    笑死,竟然真的有人完全相信 AI ,AI 就是一个生成系统,说白了就是字符串随机拼接,完全没有验证过的
    yaoppp
        18
    yaoppp  
       326 天前
    所以楼主是如何提问的? AI 是怎么回答的?
    charlie21
        19
    charlie21  
       326 天前   1
    AI 出错之后谁负责和 AI 本身准确度是两个问题
    当前 AI 公司都是免责型服务,你随便用,用了后果自负 /t/1082532

    也就是说,你可以调教 AI 让它对你更好用,其实用户本身成了一个免费调试员。对于这部分工作量,你的调教实际上贡献到 bot 更智能了,所以理论上 OpenAI 应该付钱给你 / 至少弥补一下你的损失
    cuicuiv5
        20
    cuicuiv5  
       326 天前   2
    生成完你再让他解释一下脚本
    83f420984
        21
    83f420984  
    OP
       326 天前
    @COW
    @MossFox
    @VZEXEZVzzz
    @EZ4ZZW
    @yaoppp

    如何提问和 AI 给出的代码已经发上来了
    importmeta
        22
    importmeta  
       326 天前   1
    这段时间在写一个平台, 深刻体会到 AI 根本不是万能的, 也代替不了人, 写个函数还行, 写个大点的功能就不行了.
    yanqiyu
        23
    yanqiyu  
       326 天前   1
    所以 AI 很容易搞出这种似是而非的代码,不过我吃过最大的亏就是似是而非的代码导致长达半小时的 debug 。

    不过要是想要清理挂载点盖住的文件,完全可以考虑先 unshare -m ,然后把挂载点卸了(这时候就不用考虑卸载不掉的那种情况了),然后删除文件就行了。
    Cu635
        24
    Cu635  
       326 天前
    该,谁让 op 不检查代码的?
    yanqiyu
        25
    yanqiyu  
       326 天前
    @EZ4ZZW 可能出问题的地方太多了,比如直接上来就有 findmnt 来找挂载点,但是 findmnt 输出是带树状结构的,然后 grep 的结果直接就 for-loop ,这样子要是路径有空格也会出问题

    然后前前后后就导致该卸载的卸载点没卸载掉,然后就把盘里面的文件干掉了
    julyclyde
        26
    julyclyde  
       326 天前
    太赞了
    HUZHUANGZHUANG
        27
    HUZHUANGZHUANG  
       326 天前
    用靠谱一点的,看不出来你这是哪家的,一般 claude 3.5 和 GPT 的最新模型,一般没这类问题。最重要的是你要懂代码啦
    HUZHUANGZHUANG
        28
    HUZHUANGZHUANG  
       326 天前
    @HUZHUANGZHUANG #27 另外就是我会用一个 AI 的结果到另一个 AI 那里去验证和询问。
    ochatokori
        29
    ochatokori  
       326 天前 via Android
    是这样的,和楼主无关,每次看到有人说 ai 取代程序员的我都心想但凡能看懂一点代码都说不出这话
    83f420984
        30
    83f420984  
    OP
       326 天前
    @HUZHUANGZHUANG cursor 里选择的是 claude-3.5-sonnet
    zhangeric
        31
    zhangeric  
       326 天前
    ai 给的代码一定要测试啊.
    spadger
        32
    spadger  
       326 天前
    哈哈哈哈
    leaflxh
        33
    leaflxh  
       326 天前
    哪天逃逸了都不奇怪

    rm -rf 属于高危操作
    zhujinliang
        34
    zhujinliang  
       326 天前 via iPhone   10
    AI 自撰一良方 服之 卒
    mingtdlb
        35
    mingtdlb  
       326 天前   1
    人家给你代码,你都不审计一下吗?
    sn0wdr1am
        36
    sn0wdr1am  
       326 天前   1
    以后直接用 AI 看病,后果可想而知。

    能直接把人给看没了。
    sn0wdr1am
        37
    sn0wdr1am  
       326 天前   1
    不要过度信任 AI ,就像不要把辅助驾驶功能当作无人驾驶功能一样。
    oldcai
        38
    oldcai  
    PRO
       326 天前
    是哪个 AI 来着
    83f420984
        39
    83f420984  
    OP
       326 天前
    @oldcai cursor 里选择的是 claude-3.5-sonnet ,但不确定额度用完后会不会降级成其它
    javaisthebest
        40
    javaisthebest  
       326 天前
    那玩意和搜索引擎有啥本质区别?

    搜索引擎答案是什么 ai 答案是什么

    你用 ai 背后说不定非洲一大群黑叔叔正在做数据标注给你筛选答案呢
    liulicaixiao
        41
    liulicaixiao  
       326 天前
    删东西的脚本你也敢乱用哈哈,我上次让 claude 写个自动更换代理的脚本我都是自己看完一遍代码才敢用
    enihcam
        42
    enihcam  
       326 天前
    想起一个巨 sb 的同事。

    我:这个代码测了没?
    他:这个代码是 AI 生成。

    我:那,这个代码测了没?
    他:这个代码是 AI 生成。

    我:我知道,我是问这个代码测了没?
    他:这个代码是 AI 生成。
    512357301
        43
    512357301  
       326 天前 via Android
    AI 是干脏活儿、累活儿的,不是干新活儿的。
    提线木偶知道吧,AI 现阶段只能当提线木偶来用,还没法让它独立干活儿,太不可控了。。。
    它就好像是你的一个高能下属,干活儿很快,80%的效果都不错,但你不盯着它,它就可能搞砸事情。。。
    它的某些能力确实很牛逼,但你控制不了它,它就会“作恶”,虽然它只是在执行你的命令而已。
    推荐看一篇短篇漫画,《神秘的程序员们系列代码的深渊》,讲的就是 AI 的故事。
    BeforeTooLate
        44
    BeforeTooLate  
       326 天前
    建议用英语去提问,中文很多词表达意思不够精确
    wnpllrzodiac
        45
    wnpllrzodiac  
       326 天前
    rm -rf ${variable}/

    这种脚本么。变量一空就废了
    pq2Q3XZidsTF906J
        46
    pq2Q3XZidsTF906J  
       326 天前
    楼上好多人没用过 cursor 把,截图最下方写了模型是 claude3.5-connect ,我原来也用了一段时间最近发现不能白嫖,昨天看到马斯克的 gork2 更新了,免费每个月 25 美元的 api ,用 ai 写了下载网上视频的 python 程序,感觉比 chatgpt 和 claude3 好用,不过用了一个多小时又报错不能用了:遇到了来自 Custom Provider 的错误,一般是由错误设置或账户问题引起的。请检查 AI 设置和账户情况,或者点击这里查看常见问题文档。API Error: Status Code 400, {"code":"Client specified an invalid argument","error":"The model expects a single `text` element per message."}

    有知道的指点一下谢谢
    plmsuper8
        47
    plmsuper8  
       326 天前
    gpt4 给的建议是:

    这段脚本的核心逻辑看起来非常周全,。。。不过,还有一些地方可以优化和加强健壮性:改进建议:
    。。。

    安全性检查:
    避免误删除非挂载点文件:

    ```bash
    find "$MOUNT_BASE" -mindepth 1 -maxdepth 1 -type d -exec test -z "$(findmnt -n -o TARGET -- "{}")" \; -exec rm -rf {} +
    ```
    plmsuper8
        48
    plmsuper8  
       326 天前
    @javaisthebest 区别是,搜索引擎的东西大多还是能用的(被 ai 污染前),毕竟试过才会贴上来。

    但是看 ai 领域现在的激进程度,好日子还在后头呢
    poorcai
        49
    poorcai  
       326 天前
    cursor 这么拉的吗?
    nenseso
        50
    nenseso  
       325 天前
    有点可怕
    lyxxxh2
        51
    lyxxxh2  
       325 天前
    @enihcam
    可能他认为
    出了问题,可以推给 ai 。
    hikarugo
        52
    hikarugo  
       325 天前   1
    写 ui 用 ai 无脑上没啥问题,功能性的自己都不看真怪不了 ai ,尤其是系统级脚本,ai 也是一个自动化工具,也会出错,cursor 我就在用,非常好用,目前就是编程 ai 的天花板。但是涉及到 sh 脚本我是必然一行一行看过去的
    yankebupt
        53
    yankebupt  
       325 天前   1
    rm -rf 出过多少事了。Nvidia 的驱动事件还记得么……应该加个 system prompt....AI 给出的代码 rf 禁止带 f……
    openmynet
        54
    openmynet  
       325 天前
    AI 本身就是欺软怕硬。
    zy5a59
        55
    zy5a59  
    PRO
       325 天前   1
    AI 给的代码是真得测试的,尤其是这种涉及到重要数据的
    laminux29
        56
    laminux29  
       325 天前   1
    普及一下写 AI 的正确姿势:

    1.不要用 Cursor 、Copilot 这种大规模协作的 AI ,因为商业化的 AI ,会考虑成本,会限制每个会话的运算空间与运算时间,运算空间为会话用到的临时硬盘空间、显存与内存。你让它执行整个 APP 或 Project 规模的,因为运算空间与时间不变,输入规模越大,会导致精度越差。建议使用最新的 gpt-o1 ,让它输出函数级别(方法级),能提高精度。而且 gpt-o1 能输出思考的过程,你能根据它的思考过程,来判断当前 AI 的思路是否靠谱。

    2.不要用中文去问,必须用英文。因为训练数据都是英文的,你用中文,它会内部翻译一次,翻译时不一定准确。
    Skifary
        57
    Skifary  
       325 天前   3
    AI 无法帮助一个不会的人工作,只能帮助一个已经会的人提高效率。

    这句话只有用过的吃过亏的人才理解,但是有些利益相关方鼓吹 AI ,贩卖焦虑,卖课真是恶心至极
    nyxsonsleep
        58
    nyxsonsleep  
       325 天前
    你和高速 AI 开车一样牛
    yulgang
        59
    yulgang  
       325 天前
    清理。。。
    DingJZ
        60
    DingJZ  
       325 天前
    我都让 ai 加 dry run 参数
    busier
        61
    busier  
       325 天前
    删除挂载点空目录因该用 rmdir ,你要用 rm -rf 死的不冤!
    spike0100
        62
    spike0100  
       325 天前
    只有你真的敢这么用。
    justdoit123
        63
    justdoit123  
       325 天前
    甲:这个数是 mod 3 = 1 吗?
    乙:是的。
    甲:ipython3 -> xxx % 3 -> 2 。这不等于 1 啊!
    乙:怎么可能?你是不是算错了!
    甲:你怎么算的?
    乙:ChatGPT 算的。
    甲:...............................................
    z5e56
        64
    z5e56  
       325 天前 via Android
    ai 给的代码我都会叫它再给出测试代码,审一遍再跑一遍
    julyclyde
        65
    julyclyde  
       325 天前
    @z5e56 你确认它的测试代码是另外独立写出来的,而不是根据现有待测代码派生的?
    MrKrabs
        66
    MrKrabs  
       325 天前
    人写的 bash 都不敢信还信 AI 啊
    qiuhang
        67
    qiuhang  
       324 天前
    这个 rm -rf 就很灵性啊
    Cu635
        68
    Cu635  
       324 天前
    可能不太严谨,但总感觉跟 op 提出的话题是相关的:

    /t/1090040
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3466 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 00:44 PVG 08:44 LAX 17:44 JFK 20:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86