Apache Mina SSH Client в режиме Shell - не печатные /экологичные символы.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Apache Mina SSH Client в режиме Shell - не печатные /экологичные символы.

Сообщение Anonymous »

У меня есть немного кода Java, который использует клиент Apache Mina SSH для подключения к Windows Server, работающему OpenSsh.

Цель состоит в том, чтобы получить интерактивную < /strong> (я могу выпустить команду, а затем выпустить еще одну команду).

У меня есть это работа, однако, что я получаю из -за того, что он есть в «Br />
». Однако в ответе у меня есть в ответ. Нет ответов, предлагающих использовать exec () и цепочку нескольких команд на одной строке, используя EG && - это не то, что я хочу. Некоторые из команд, которые я выполняю, изменяют переменные среды и т. Д., Поэтому, если я запустил новый сеанс для каждой команды, они будут теряются < /strong>

Некоторый пример кода: < /p>

Код: Выделить всё

        SshResponse response;
shell = session.createShellChannel();
shell.open();

in = shell.getInvertedOut();
response = getResponse();
System.out.println(String.join("\r\n", response.responseLines));

// Not really relevant to this question, but this is the kind of stuff I will be doing:
out = shell.getInvertedIn();
out.write("setenv.bat\r\n".getBytes()); // Do something which sets some env variables
out.flush();
response = getResponse();
// Analyse response
out.write("dosomething_else\r\n".getBytes());
// etc

session.close(false);
client.stop();
Для краткости я не буду перечислять другой код, но, по сути, все getResponse () выполняют, читается в (The Inputstream) символ по символу в stringbuilder , и когда он встречается новая строка, добавляет, что строка в ответ (string> ). Командная строка, например, C: \ users \ Admintrator>

она не добавляет строки подсказки в responselines .
Следовательно, ответные линии должны содержать только две строки:

Код: Выделить всё

Microsoft Windows [Version 10.0.26100.3775]
(c) Microsoft Corporation. All rights reserved.
< /code>
Тем не менее, то, что я понимаю, это:



line 0 - это чистое загрязнение и не должно присутствовать во всех. а затем после этого содержит номер версии Windows, как и должно. Делаете ли это, это выглядит в соответствии с вышеупомянутым - только 2 строки авторских прав

 < /p>
Так мой вопрос - каковы эти дополнительные символы? Я  думает , это может быть, какое -то управляющее персонажи - форматирование или что -то в этом роде? Каждая из плохих последовательностей начинается с символа ESC < /code>, и там также есть Bel < /code>.

Как избавиться от них от ответа? Очевидно, вы могли бы использовать регулярные индексы или что -то в этом роде, чтобы удалить их, но в идеале я бы предпочел какой -то метод, который означает, что они даже вообще не попадают в ответ. Я написал код, который использует тот же подход с использованием библиотеки SSHJ (черт возьми, getResponse () 
, идентичен в моей реализации SSHJ), и я не получаю эту проблему с SSHJ (хотя, к сожалению, загрузка SFTP сломана в SSHJ - отсюда и я смотрю на использование Apache Mina), так что я предполагаю, что это то, что это зависит от Apache Mina, и, возможно, может быть, что -то вроде.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... s-pollutin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»