2016-04-21 157 views
1

我有一个保存在远程服务器(linux机器)上的shell脚本,我试图在执行从Windows的SOAPui的各种测试用例之间调用该shell脚本。 所以我准备了一个Groovy脚本:如何从soapui groovy脚本执行shell脚本?

def command="/usr/bin/ssh -p password [email protected]_address bash -s < /home/test.sh" 
def proc=command.execute().text 
proc.waitFor() 

但不幸的是,我收到了一个错误:

产生java.io.IOException:不能运行程序 “的/ usr/bin中/ SSH”:CreateProcess的错误= 2,系统找不到文件指定的错误在行:6

我试图在此搜索更多,但无法获得解决方案。有些链接是:

How to execute shell script using soapUI

http://groovy-lang.org/groovy-dev-kit.html#process-management

+0

如果你执行* SOAPUI *在Windows上不能使用'在/ usr/bin中/ ssh'自'command.execute()'是在本地运行和在Windows中,你没有'/ usr/bin/ssh'。尝试为Windows安装ssh客户端并在您的命令中使用它。 – albciff

+0

我知道我们不能使用/ usr/bin/ssh,但我只需要从windows中的soapui工具执行脚本。那么我怎么能够从ssh客户端执行windows(如腻子等)呢? – Nikhil

+0

我用'putty'看了一下它的示例:) – albciff

回答

1

如果你发表评论你已经安装在Windows上一个putty.exe可以与后续的尝试。

首先在你的Windows本地创建一个文件,用命令远程执行例如我创建了如下C:/temp/commandsToRunRemotely.txt然后在这个文件中放上你想要执行的命令。作为一个示例中,我使用如下命令:在

echo "test remote execution" > /tmp/myfile.txt 

然后从Groovy脚本 SOAPUI呼叫putty.exe通过其包含的命令来远程执行本地文件:

def command = "C:/path/to/putty.exe -ssh [email protected] -pw pass-m C:/temp/commandsToRunRemotely.text" 
def proc = command.execute() 
proc.waitFor() 

注意,如果你的Windows路径中有putty.exe,你可以简单地使用putty.exe而不是完整路径。

这仅仅是一个ilustation样本,但如果你想执行一个shell脚本,远程,而不是在命令echo "test remote execution" > /tmp/myfile.txt文件中使用直接的路径,你的脚本:/home/test.sh

我得到的腻子命令行选项从这个nice answer

希望它能帮助,

+0

感谢您的专家解答。但是,如果我们通过命令行执行整套soapui,查询仍然存在。这个命令将由Jenkins发送给一些服务器(新的Windows机器),这将使我们强制首先安装putty。有没有其他的替代方案没有从腻子或一些SSH工具运行? – Nikhil

+0

@Nikhil这改变了你原来的问题,因为你原来的问题只是想使用SOAPUI远程执行从Windows到Linux的shell脚本......除了在你的评论中,你从字面上告诉“所以我将如何能够从ssh客户端执行窗户(如腻子等)?''然后我把'putty'作为你的一个可能的选择......这个新的约束使IMO成为一个新的问题。请将此作为一个新的问题发布,并详细说明所有细节':)'。 – albciff