2011-12-04 26 views

回答

2

您可以簡單地啓動一個新進程並執行任何您希望的shell命令。例如:

String[] procArgs = { "ssh", "arguments" }; // set arguments here. 
Process process = Runtime.getRuntime().exec(procArgs); 
+0

不錯的建議,但我運行Java的機器可能沒有安裝ssh – Zubair

3

早在2004年我們就使用http://www.jcraft.com/jsch/ - 對我們來說工作得很好。

正在運行的進程也是一個不錯的選擇,但它會使你被綁定到一個特定的操作系統(或一組特定的操作系統)。

查看sourcesantsshexec任務:他們使用相同的庫。該連接由圖書館保存;輸出流由setOutputStreamsetExtOutputStream設置。

您可能需要的是刪除超時 - 或使其更加智能一點,以便只在沒有新數據的情況下斷開連接。

+0

您是如何設法保持連接打開並從「tail -f」輸出中讀取的? – Zubair

+0

查看已更新的代碼示例鏈接。 – alf

+0

謝謝。我查看了源代碼,發現它使用了System.out。你知道它是否適用於多個「tail -f」?我想我試圖找出它是否是線程安全的 – Zubair