0
我想在遠程機器上運行一些命令並使用Java捕獲結果。我有一個shell腳本調用test.sh它具有以下命令:SSH到遠程主機使用sshpass和使用java獲取結果
sshpass -p 'password' ssh [email protected] echo hostname
我用下面的java代碼運行它:
public void runCommand() throws IOException, InterruptedException {
ProcessBuilder builder = new ProcessBuilder();
boolean isWindows = System.getProperty("os.name").toLowerCase().startsWith("windows");
if (isWindows) {
builder.command("cmd.exe", "/c", "dir");
} else {
builder.command("sh", "-c", "sh test.sh");
}
builder.directory(new File(System.getProperty("user.home")));
Process process;
BufferedReader reader = null;
try {
process = builder.start();
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
String output = stringBuilder.toString();
System.out.println(output);
} finally
{
if (reader != null)
try {
reader.close();
} catch (IOException e) {
}
}
}
該命令執行,但我不是在得到任何東西輸出。如果我使用簡單的命令如echo,hostname,那麼我可以得到輸出結果。我知道JSch可以解決問題,但我無法使用它。
也許yiu得到一些例外,不記錄它們? – talex
@telex腳本運行沒有任何問題,如果我從終端運行它 – HyperioN
它不回答我的問題。 – talex