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

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

Сообщение Anonymous »

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

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

У меня есть это работа, однако, что я получаю от ответа. /> , пожалуйста, нет ответов, предлагающих использовать 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();
См. Linked Gist в конце сообщения для полного рабочего кода.

to Summarize - по существу, все getResponse () выполняют, читается в (The Inputstream) символ в символ в stringbuilder , и когда он сталкивается с новой линией, добавляет, что линейка ответа . />
It знает, когда закончить, ищет командную строку, например, c: \ users \ Administrator> < /code>

она не добавляет строку подсказки к ответам < /code>. < /p>
Следовательно, ответы < /code> должны содержать только две строки: < /p>

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

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://gist.github.com/evilc/8c977c735 ... eed4a236a3

Поведение немного отличается с точки зрения количества линий ответа (иногда 2 строки, но не 4, как 4, то есть то, что это то, что и точнее, то же самое. Вам нужно будет отредактировать MachineNememe, имя пользователя, пароль и т. Д., Чтобы соответствовать вашей системе.

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

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

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

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

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

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