2011-06-18 33 views
7

使用'expect'時,可以執行SSH命令並解析這些命令的輸出以更改程序流。我想用Java來做這件事。也就是說,我希望我的Java應用程序啓動SSH會話,在遠程服務器上執行一個命令,並且依賴於該命令的輸出執行下一個命令,而無需啓動新的SSH會話。Java應用程序中的SSH功能與'expect'類似

這在Java中可能嗎?

謝謝

回答

3

嘗試ExpectJ。      

+0

這是一個有趣的項目,但不是我在這裏尋找的,因爲我想保持SSH純Java - 更好的異常處理方式。 – jtnire

3

是的,這是可能的。有一些庫,但我建議Ganymed SSH-2。你可以下載它here,也有很多使用功能的例子...

+0

這看起來不錯!但是,該網站稱該代碼不再被維護。你有這段代碼的經驗嗎?它是穩定的還是有點bug的?這樣的例子似乎很適合這個賬單 – jtnire

+0

那麼,根據我的經驗,它似乎工作正常,但我不是100%肯定... –

6

自我推銷我的項目:在看了其他基於Java的Expect庫之後,我決定寫我自己的...希望你覺得它很有用。如果您發現任何問題,請在GitHub中打開問題。

https://github.com/ronniedong/Expect-for-Java

對於SSH,我建議使用JSch,如自述文件中的例子。

+0

的確,這是優雅和簡單的,只是耦合到'java。 io.InputStream'和'javax.io.OutputStream'接口(這些接口通常是來自諸如JSch或Ganymed等SSH庫的可用構造),但對於生產者/消費者場景使用NIO構造進行智能幕後使用,即java .nio.channels.Pipe'。它比Expect4J(所有這些依賴關係!)要好,並且比Enchanter(未保留,同步錯誤,無正則表達式)或ExpectJ(無正則表達式)更好。謝謝! –