我已经在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变量正确吐入单引号中。
到目前为止,我似乎已经尝试了数千种选择,有人有什么好主意吗?
预先感谢
答案 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:/
'''