Perl - 重复expect()直到接受输入

时间:2014-09-10 23:51:02

标签: perl cisco-ios

我正在使用Perl在一些Cisco路由器上自动化脚本。基本实现是它连接到给定的路由器列表,一个接一个地收集所需的信息。每次脚本连接到新路由器时,它都会请求密码,这对所有路由器都是相同的。

我有以下代码来捕获密码请求并输入密码:

    $session->expect(5, 
        [ 'password:' => sub {
            $session->send("$password\r");
                #exp_continue;
            }]);   

问题在于,无论出于何种原因,有时第一次不接受密码。有没有办法重复上面的代码,直到接受密码?

1 个答案:

答案 0 :(得分:2)

超级简单的实施:

my $tries = 0;
my $max = 5;
while ($tries < $max) {
    $tries++;
    # do your stuff
    # assuming that you can assess the success of the password sending:
    last if <test for successful condition>;
}

您可以将最大尝试次数设置为适合您情况的任何内容。