ExpectIt: подавить эхо консоли
См.: ExpectIt: Проблема с реализацией sudo -i.
Привет всем, Как я могу избежать вывода всех результатов Expectit на мою консоль Java?
Вот как я начал свой SSH:
public void connect( String host, String user, String password ) throws Exception {
this.host = host;
this.user = user;
this.password = password;
ssh = new SSHClient();
ssh.addHostKeyVerifier( new PromiscuousVerifier() );
ssh.connect(host, port);
ssh.authPassword(user, password);
session = ssh.startSession();
session.allocateDefaultPTY();
shell = session.startShell();
expect = new ExpectBuilder()
.withOutput(shell.getOutputStream())
.withInputs(shell.getInputStream(), shell.getErrorStream())
.withInputFilters(removeColors(), removeNonPrintable())
.withExceptionOnFailure()
.withTimeout(30, TimeUnit.SECONDS)
.build();
String result = expect.expect( Matchers.contains( PROMPT ) ).getInput();
consoleOut.add( result );
}
Теперь ВСЕ результаты, полученные из Expect, будут отображаться на консоли. Я могу взять строку "result", но она также отправляется на консоль tomcat (я уверен, что не отправляю ее).
expect.sendLine( command );
String result = expect.expect( Matchers.contains( PROMPT ) ).getInput();
Я работаю в контейнере Tomcat (веб-среда).
1 ответ
Решение
Вы можете отключить команду echo, отправив stty -echo
Команда в начале сеанса. Посмотрите на этот пример.
Я предлагаю публиковать вопросы в группе пользователей ExpectIt, а не в Stackru, поскольку в настоящее время этой библиотекой пользуется всего несколько человек.