我正在编写PERL-Expect脚本来自动化测试。在脚本中,我想在执行命令时获取警告消息,并根据警告消息采取操作。警告信息可能因某些情况而有所不同,警告可能根本不显示。
prompt>delete fs
WARNING: Are you sure?(Y/N).. backup is running:
在上面的场景中,我需要在继续操作之前将WARNING消息作为输入,然后在发送回复之前进行一些处理。
在某些情况下,警告可能不会显示如下所示,例如,如果备份未运行且命令未经处理就执行:
prompt>delete fs
Done.
prompt>show fs
...
如果显示命令后如何获取警告消息?
感谢。
答案 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();