我正在尝试使用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