PERL-Expect: получить ввод после отправки команды. - PullRequest
0 голосов
/ 29 июля 2011

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

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

В приведенном выше сценарии мне нужно получить сообщение ПРЕДУПРЕЖДЕНИЕ перед продолжением, а затем выполнить некоторую обработку перед отправкой ответа.

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

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

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

Спасибо.

1 Ответ

1 голос
/ 30 июля 2011

Исходя из Ожидайте , что вы хотели бы сделать что-то вроде:

 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();
...