2010-03-17 64 views
0

嘿,我遇到了試圖在java中其中一個遠程Linux服務器上執行命令並返回處理輸出到建立一個程序時,下面的問題......通過Java運行時發送和收到多個SSH命令和Cygwin

基本上我有一個SSH客戶端安裝了Cygwin,想做到以下幾點:

打開的Cygwin,

發送命令「用戶@ IP」;

返回輸出;

發送指令「密碼」;

返回輸出;

發送多個其他命令,

返回輸出;

...等...

到目前爲止:

過程proc等於調用Runtime.getRuntime()EXEC鍵。( 「C:/電源應用程序/ Cygwin的/ Cygwin.bat」);

工作很好,除了我不知道如何嘗試下一步驟。

任何幫助?

回答

1

快速的方法:不要經過cygwin。將您的登錄信息和命令作爲參數傳遞給ssh。

更好的方法:安裝並使用開放源代碼和非常成熟的Sun Grid Engine並使用它的DRMAA綁定來執行您的命令。你也可以考慮切換到腳本語言(你的腳本就像任務一樣)。如果你做DRMAA也有Perl,Rubyother bindings

1

您也可以使用的Plink: Download here

這是一個很好的指令集link here

您可以使用如下命令: 砰砰根@ MYSERVER -pw PASSW的/ etc /備份/ DO- backup.sh

+0

這將是理想的,除了我需要登錄到監視器,並從那裏的其他服務器不允許在SSH上的外部訪問。 – Moustachio

1

在java中使用ssh實現。幾年前我使用了Ganymede,現在也許有更好的選擇。 (?)

使用Ganymede,您將獲得一個輸入流以供讀取,並有一個輸出流可寫入。

您可以在輸入流上創建一個LineInputReader,並使用它讀取代表遠程服務器輸出的Strings。然後使用正則表達式模式/匹配器來解析響應。

在輸出流上創建PrintWriter並使用println()發送您的命令。

它簡單而實際上非常強大(如果你知道正則表達式......它可能需要一些試驗和錯誤才能得到它的正確性......)