Как писать на Java в stdin ssh?

В командной строке все работает нормально, но когда я перевожу то, что хочу, на Java, получающий процесс никогда ничего не получает на стандартный ввод.

Вот что У меня есть:

private void deployWarFile(File warFile, String instanceId) throws IOException, InterruptedException {
    Runtime runtime = Runtime.getRuntime();
    // FIXME(nyap): Use Jsch.
    Process deployWarFile = runtime.exec(new String[]{
            "ssh",
            "gateway",
            "/path/to/count-the-bytes"});

    OutputStream deployWarFileStdin = deployWarFile.getOutputStream();
    InputStream deployWarFileStdout = new BufferedInputStream(deployWarFile.getInputStream());
    InputStream warFileInputStream = new FileInputStream(warFile);

    IOUtils.copy(warFileInputStream, deployWarFileStdin);
    IOUtils.copy(deployWarFileStdout, System.out);

    warFileInputStream.close();
    deployWarFileStdout.close();
    deployWarFileStdin.close();

    int status = deployWarFile.waitFor();
    System.out.println("************ Deployed with status " + status + " file handles. ************");
}

Сценарий «count-the-bytes» прост:

#!/bin/bash

echo "************ counting stdin bytes ************"
wc -c
echo "************ counted stdin bytes ************"

Вывод показывает, что функция зависает в строке «wc -c» - она ​​никогда не достигает строки «counted stdin bytes».

Что происходит? Может ли использование Jsch помочь?

5
задан Andrzej Doyle 20 June 2011 в 17:04
поделиться