2014-05-03 73 views
0

我使用下面的代碼通過Java觸發Unix腳本。我無法弄清楚爲什麼這個命令不起作用。從JAVA運行時通過plink執行Unix腳本

String cmd="E:\\plink.exe -ssh -l user -pw p123 10.xxx.xx.xx \"sh /home/try.sh\""; 
    System.out.println(cmd); 
    Process process=Runtime.getRuntime().exec(cmd) ; 
    process.destroy(); 

我需要對它進行一些修正嗎?

+0

你得到的錯誤是什麼?當您嘗試通過命令提示符時,該命令是否正常運行? – Hirak

+0

@Hirak:Cmd工作正常,我在Tom Cat日誌文件夾中沒有得到任何錯誤 –

+0

我建議先在hello world主程序中嘗試一下,並檢查是否有任何錯誤。你的代碼看起來很好。只有建議是,而不是String cmd,使用字符串數組。類似於String cmd [] = {「E:\\ plink.exe」,「-ssh」....}; – Hirak

回答

0

Runtime.exec只啓動指定的程序/進程。你需要在它有時間連接併發送命令之前立即銷燬它,如你所願。至少你應該等待()它完成。

您不會說腳本是否產生(任何)輸出。如果確實如此,並且希望在輸出中發生任何事情,例如在某處顯示或保存,則需要從Process.getInputStream()中讀取並執行操作。此外,如果您的腳本需要輸入(不太常見),則需要將其寫入.getOutputStream()。