如何使用Jenkins Active choice参数groovy脚本在远程服务器中执行shell脚本



我正在尝试使用groovy脚本通过ssh在远程服务器中执行shell脚本。

注意:源服务器和目标服务器是经过无密码身份验证的

Groovy脚本测试.Groovy:

def sout = new StringBuffer(), serr = new StringBuffer()
//def proc = "sh test.sh".execute()
def proc = "sh test.sh".execute()
proc.consumeProcessOutput(sout, serr)
println proc
proc.waitForOrKill(1000)
println sout
println serr
def final_output = sout.tokenize()
println final_output
return final_output

我的test.sh包含:

cd /Users/xyz/testing_directory
#show me list of files 
ssh xyz@10.56.45.67 'ls'

现在,当我使用groovy test.groovy执行相同的操作时,我不会得到任何输出。

但如果我正在改变";sshxyz@10.56.45.67"ls"行到仅";ls〃;在test.sh中,它可以工作,并向我显示相同源服务器的文件列表

从test.sh 中删除ssh部分的工作示例

#show me list of files 
ls

现在的问题是groovy脚本在通过ssh 连接到远程服务器时无法显示输出

注意:sshxyz@10.56.45.67"ls"在jenkins execute shell和终端中工作良好,但在groovy脚本中不工作

请帮我,提前感谢

经过反复试验,我终于找到了解决方案。

感谢@daggett

def sout = new StringBuffer(), serr = new StringBuffer()
def proc = "ssh username@10.x.x.xx 'ls'".execute()
proc.waitForProcessOutput(sout, serr)
println proc
proc.waitForOrKill(1000)
println sout
println serr
def final_output = sout.tokenize()
println final_output
return final_output

最新更新