2016-04-21 145 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