You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Pipeline SSH删除指定外文件脚本编译报错求助

问题分析与修复方案

核心错误点

  1. Jenkins Pipeline语法错误:

    • 调用sh步骤时用了错误格式:sh [""" ... """)],正确写法是直接传递字符串参数,不需要方括号,且引号配对错误(开头用三个双引号,结尾误用圆括号),这直接触发了Groovy编译失败。
  2. 远程Shell命令问题:

    • !(api|inpinn|...)是Bash专属的扩展匹配语法,若远程主机默认Shell为sh则不支持该语法;
    • yes | rm完全多余,给rm添加-f参数即可跳过删除确认;
    • 直接用rm匹配排除项风险较高,建议用更可控的find命令执行删除操作。

修正后的Pipeline脚本

方案1:基于Bash扩展语法执行

sh """
ssh -T -o StrictHostKeyChecking=no myname@myip << 'EOF'
  bash -c '
    cd /home/user/usr/share/nginx/html && rm -rf !(api|inpinn|outpinn|hp_frontend|email_inpinn)
  '
EOF
"""

方案2:基于find命令执行(兼容所有POSIX Shell,更安全)

sh """
ssh -T -o StrictHostKeyChecking=no myname@myip << 'EOF'
  find /home/user/usr/share/nginx/html -maxdepth 1 -mindepth 1 \
    ! -name 'api' \
    ! -name 'inpinn' \
    ! -name 'outpinn' \
    ! -name 'hp_frontend' \
    ! -name 'email_inpinn' \
    -exec rm -rf {} +
EOF
"""

重要提示

  • 测试阶段建议将rm -rf替换为echo,先验证待删除的文件/目录是否正确,避免误删;
  • 确保远程主机的myname用户对目标路径拥有足够的读写权限;
  • StrictHostKeyChecking=no会关闭主机密钥验证,生产环境建议改为StrictHostKeyChecking=accept-new以提升安全性。

内容的提问来源于stack exchange,提问作者Subramanya P Hegde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:39