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();
}
如果我記得,當發生錯誤時,它會阻止你的程序,直到你閱讀它。這可能是發生了什麼事。 –
您應該使用Java SSH庫,例如[sshj](https://github.com/hierynomus/sshj)或[JSch](http://www.jcraft.com/jsch/)。此代碼非常容易出錯,因爲您沒有正確關閉流,而且您也沒有從錯誤流中讀取數據。你大概是在美國東部時間這樣做。 –
我會看看這個謝謝 –