PERL-Expect:发送命令后获取输入。

时间:2011-07-29 13:43:51

标签: perl automation expect

我正在编写PERL-Expect脚本来自动化测试。在脚本中,我想在执行命令时获取警告消息,并根据警告消息采取操作。警告信息可能因某些情况而有所不同,警告可能根本不显示。

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

在上面的场景中,我需要在继续操作之前将WARNING消息作为输入,然后在发送回复之前进行一些处理。

在某些情况下,警告可能不会显示如下所示,例如,如果备份未运行且命令未经处理就执行:

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

如果显示命令后如何获取警告消息?

感谢。

1 个答案:

答案 0 :(得分: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();