Очень простой терминал на Java - PullRequest
0 голосов
/ 06 октября 2011

Мне нужно выполнить 5 - 10 команд из приложения Java (которое работает в Windows и Linux) на SSH-сервер и показать вывод этих команд в JFrame.Выход может быть тысячи строк.Я выбрал Ganymed-SSH для связи SSH и выполнил метод startShell (), который дал мне сообщение для входа и информацию о последнем входе, но когда я пытаюсь записать в OutputStream, он не работает.информация для входа в систему и ОС:

 while((line = outputReader.readLine()) != null){
        System.out.println(line);
    }

Но следующий код не работает должным образом:

OutputStream inputToShell = (shellSession.getStdin());
inputToShell.write(b);

Нужно ли реализовывать терминальную логику?Если это так, мне просто нужно выполнить некоторые команды и затем показать вывод пользователю, как поступить?

1 Ответ

3 голосов
/ 06 октября 2011

Я бы посоветовал создать простую оболочку Java вокруг библиотеки Ganymed-SSH, которая принимает стандартный код Java и выводит его в стандартный формат оболочки Shell, а также направляет stdout и стандартный поток оболочки в эквиваленты Java. Таким образом, вы можете проверить, как использовать библиотеку и какие команды отправлять, в каком порядке и т. Д.

Например:

public static void main(String[] args) {
  final ShellSession shellSession = ...

  Thread input = new Thread() {
    @Override public void run() {
      byte[] buffer = new byte[1024];
      while(!shellSession.isClosed()) {
        int read = System.in.read(buffer);
        shellSession.getInputStream().write(buffer, read);
      }
    }
  }

  Thread output = ...
  Thread error = ...

  input.start();
  output.start();
  error.start();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...