Цель состоит в том, чтобы получить интерактивное < /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();
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 () Поведение немного отличается с точки зрения количества линий ответа (иногда 2 строки, но не 4, как 4, то есть то, что это то, что и точнее, то же самое. Вам нужно будет отредактировать MachineNememe, имя пользователя, пароль и т. Д., Чтобы соответствовать вашей системе.
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-pollutin
Мобильная версия