2011-07-29 35 views
0

我正在編寫一個PERL-Expect腳本來自動化測試。在腳本中,我希望在執行命令時獲取警告消息,並根據警告消息採取行動。警告消息可能會因某些情況而有所不同,並且警告也可能根本不顯示。PERL-Expect:發送命令後獲取輸入。

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

在上述情況下,我需要得到警告消息作爲輸入出發前,然後發送回覆之前做一些處理。

可能無法顯示的警告在某些情況下圖所示,對於例如,如果備份沒有運行,並且命令不做處理直接執行:

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

如何獲得警告消息後命令如果顯示則發送?

謝謝。

回答

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