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

Jenkins使用sshCommand带参数调用远程Linux服务器命令失败如何解决?

Jenkins sshCommand传递带参数命令的正确写法

现有代码的核心问题

  • 变量引用语法错误:sshCommand中command: ${comm}的写法不符合Groovy语法,${}插值语法必须包裹在双引号内,或者直接传入变量即可,不需要加${}
  • 参数拼接无转义:直接拼接param1、param2如果包含空格、引号、shell特殊字符,会导致远程服务器解析命令出错

修正后的可用脚本

// 提前对参数做单引号转义,避免参数含特殊字符导致命令解析失败
param1 = param1.replace("'", "'\\''")
param2 = param2.replace("'", "'\\''")
// 用双引号做字符串插值构造完整命令,参数外层包单引号隔离
String comm = "java -jar *.jar -param '${param1}' -param '${param2}'"
 
node {
    def remote = [:]
    remote.name = 'test'
    remote.host = '*'
    remote.user = '*'
    remote.password = '*'
    remote.allowAnyHosts = true
 
    stage('Remote SSH') {
        // 直接传入构造好的comm变量即可,不需要加${}
        sshCommand remote: remote, command: comm
    }
}

调试建议

如果还是执行异常,可以在调用sshCommand前打印构造的命令,确认内容符合预期:

println "待执行的远程命令:${comm}"

内容的提问来源于stack exchange,提问作者Wizard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:01