0

我在 jenkins 中设置了一些全局凭据,用户名密码类型。

我现在必须将文件 scp 到管道内的目标服务器。

为了争论,假设我的密码变量是secretpassword。

有谁知道如何让密码与 sshpass 一起正常工作?

这是我正在尝试做的事情的要点

sh '''
sshpass -p'${PASSWORD}' scp  ${WORKSPACE}/target/citest-1.0-SNAPSHOT.jar root@target_service:/
'''

无论我尝试什么,我似乎都无法正确地将密码传递给 sshpass

如果我执行以下操作,它可以正常工作

sh '''
sshpass -p 'secretpassword' scp ${WORKSPACE}/target/citest-1.0-SNAPSHOT.jar root@target_service:/
'''

所以我显然只是搞砸了如何让 PASSWORD 环境变量正确吐出到单引号中。

到目前为止,我似乎已经尝试了几千种选择,有人有什么好主意吗?

提前致谢

4

2 回答 2

1

尝试不使用单引号。

sshpass -p ${PASSWORD} scp ${WORKSPACE}/target/citest-1.0-SNAPSHOT.jar root@target_service:/

是否有任何特定理由将其保留在单引号中?因为单引号不会插入变量。

于 2018-07-01T22:27:57.737 回答
1

仅当您有多个 sh 命令要运行时才使用''' ,如果它只是一个命令,那么就这样做,它应该可以正常工作

 sh "sshpass -p ${PASSWORD} scp  ${WORKSPACE}/target/citest-1.0-SNAPSHOT.jar root@target_service:/ "

如果你需要使用'''

然后在没有单引号的情况下使用它

sh '''
sshpass -p ${PASSWORD} scp  ${WORKSPACE}/target/citest-1.0-SNAPSHOT.jar root@target_service:/
'''
于 2018-07-02T02:38:29.780 回答