0

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

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

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

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

4

1 回答 1

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>;
}

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

于 2014-09-11T00:27:58.450 回答