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, поскольку в настоящее время этой библиотекой пользуется всего несколько человек.

Другие вопросы по тегам