PERL-ожидание: получить ввод после отправки команды.

Я пишу сценарий PERL-Expect для автоматизации тестирования. В сценарии я хочу получать предупреждающие сообщения при выполнении команды и предпринимать действия на основе предупреждающих сообщений. Предупреждающие сообщения могут различаться в зависимости от некоторых ситуаций, а также предупреждение может вообще не отображаться.

prompt>delete fs
WARNING: Are you sure?(Y/N).. backup is running:

В приведенном выше сценарии мне нужно получить сообщение WARNING в качестве входных данных, прежде чем продолжить, а затем выполнить некоторую обработку перед отправкой ответа.

Предупреждение может не отображаться, как показано ниже, в некоторых случаях, например, если резервное копирование не запущено и команда выполняется без их обработки:

prompt>delete fs
Done.
prompt>show fs
...

Как получить предупреждающее сообщение после отправки команды, если оно отображается?

Спасибо.


person Albert    schedule 29.07.2011    source источник


Ответы (1)


Переходя с Expect, вы должны сделать что-то вроде:

 use Expect;

 my $exp = Expect->spawn("delete", "fs")
 or die "Cannot spawn $command: $!\n";

 $exp->expect(360,
   [ "Done." => \&report_success ],
   [ "Are you sure?(Y/N) => sub { my $self = shift;
                                   $self->send("Y\n");
                                   exp_continue; } ],
   [ "backup is running:" => \&report_failure ],
   [ timeout => \&report_timeout ],
 );

 $exp->soft_close();
person Duane    schedule 30.07.2011