2015-04-14 21 views
0

我一直在研究如何在java中運行終端命令。我正在這樣做一個程序,我可以使用ssh到另一臺PC(就像一個項目)。我怎麼能繼續在這個終端上放命令?如果我運行此我得到一個消息把我的密碼,如果我這樣做,它會打印出什麼消息的終端在吐出: while((line = in.readLine()) != null){ System.out.println(line + "\n");
}
如何將命令傳遞到已在java(linux)中運行的終端

線,但在那之後我的程序將停止幾秒鐘加工。 我目前有一個GUI,只是一個按鈕,如果我按下按鈕,它將運行此代碼。有人可以幫助我解決停止問題,並告訴我如何繼續將命令放入終端?謝謝。

Process p = null; 
    String[] command = {"/bin/sh", "-c", "ssh 192.168.2.100"}; 
    ProcessBuilder pb = new ProcessBuilder(command); 

    String line = null; 

    try { 
     term = pb.start(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    InputStream is = p.getInputStream(); 

    BufferedReader in = new BufferedReader(new InputStreamReader(is)); 

    try { 
     while((line = in.readLine()) != null){ 
      System.out.println(line + "\n");  
     } 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    try { 
     in.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

如果我記得,當發生錯誤時,它會阻止你的程序,直到你閱讀它。這可能是發生了什麼事。 –

+1

您應該使用Java SSH庫,例如[sshj](https://github.com/hierynomus/sshj)或[JSch](http://www.jcraft.com/jsch/)。此代碼非常容易出錯,因爲您沒有正確關閉流,而且您也沒有從錯誤流中讀取數據。你大概是在美國東部時間這樣做。 –

+0

我會看看這個謝謝 –

回答

0

你不可錯過住JVM的說法,但有辦法在其中您可以修改一些使用JMX該做的參數,有了這個,你可以連接到生活JVM和發送的參數。這將立即生效。

希望可以幫到