在脚本中将PASSWORD凭据变量从Jenkins传递到sshpass

时间:2018-07-01 16:37:35

标签: jenkins sshpass

我已经在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 env变量正确吐入单引号中。

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

预先感谢

2 个答案:

答案 0 :(得分:1)

尝试不带单引号。

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

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

答案 1 :(得分: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:/
'''