簡體   English   中英

通過Java運行時和cygwin發送和接收多個ssh命令

[英]Send and recieve multiple ssh commands via java runtime and cygwin

嘿,我嘗試在Java中構建程序時遇到以下問題,該程序在遠程linux服務器上執行命令並返回輸出以進行處理...

基本上,我已經使用SSH客戶端安裝了Cygwin,並希望執行以下操作:

打開Cygwin,

發送命令“ user @ ip”;

返回輸出;

發送命令“密碼”;

返回輸出;

發送其他多個命令,

返回輸出;

...等等...

至今:

進程proc = Runtime.getRuntime()。exec(“ C:/ Power Apps / Cygwin / Cygwin.bat”);

效果很好,但我不知道如何嘗試下一步。

有什么幫助嗎?

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

更好的方法:安裝和使用開源且非常成熟的Sun Grid Engine,並使用其針對Java的DRMAA綁定來執行命令。 您可能還考慮切換到腳本語言(您的任務非常類似於腳本)。 如果這樣做, DRMAA也具有PerlRuby其他綁定

您也可以使用Plink: 在此處下載

這里有一組很好的說明鏈接

您可以使用以下命令:plink root @ myserver -pw passw /etc/backups/do-backup.sh

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

使用Ganymede,您將獲得要讀取的輸入流和要寫入的輸出流。

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

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

它簡單而實際上非常強大(如果您了解regexp ...,可能需要經過反復試驗才能正確使用...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM