2013-03-01 156 views
1

我想通過Java程序在遠程主機上運行命令/可執行文件。這是我從相關線程獲得的代碼。我可以連接到遠程主機並通過BufferedReader在中讀取流。但是,我不能使用out.println(「ls/home/ubuntu」)發送/執行命令;。你有什麼建議?我正在研究MAC OS系統。如何通過java程序在遠程系統上運行SSH命令(後續)

Process p = Runtime.exec("ssh myhost"); 
PrintStream out = new PrintStream(p.getOutputStream()); 
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()); 
Thread.sleep(3000); 
while (in.ready()) { 
    String s = in.readLine(); 
    System.out.println(s); 
} 

out.println("ls /home/ubuntu"); 
Thread.sleep(3000); 
while (in.ready()) { 
    String s = in.readLine(); 
    System.out.println(s); 
} 
out.println("exit"); 

回答

2

我用了一個圖書館JSch,但我猜sshxcute看起來更好,因爲我通過文件去了。

+0

謝謝,我也會檢查出來。 – allnighter 2013-03-01 15:05:01

5

得到它的工作。

PrintStream out = new PrintStream(p.getOutputStream()); 

對我不起作用,所以我將其更改爲此。

PrintWriter out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(p.getOutputStream())), true);