【问题标题】:Perl: Unable to check validity of hostname for Net::Appliance::SessionPerl:无法检查 Net::Appliance::Session 主机名的有效性
【发布时间】:2012-06-01 02:48:18
【问题描述】:

当我尝试传递无效的主机名时,代码将进入无限循环。

my $s = Net::Appliance::Session->new({
personality => 'ios',
transport => 'SSH',
host => $ip
});

有没有办法克服这个错误?

编辑: 这是我的完整代码: 我使用子程序下载我的网络设备的配置文件。当我在 download_config 中传入一个无效的 IP 地址时,它会进入无限循环。

sub download_config
{
    my ($ip) = @_;
    my $s = Net::Appliance::Session->new({
     personality => 'ios',
     transport => 'SSH',
     host => $ip,
     Timeout => 1
    });

$s->set_global_log_at('debug'); # maximum debugging

    eval {
        $s->connect({ username => $username, password => $password });
        $s->begin_privileged({ password => $enable_password });

        #get hostname to set the file name
        $hostname_result = $s->cmd('sh run | inc hostname');
        $hostname_result =~ m/hostname (.*)/;
        $hostname = $1;

        #download the file
        my @running_config = $s->cmd('sh run');
        @running_config = @running_config[ 2 .. (@running_config -1)];#remove header and footer of the file
        open(FH, "> temp/".$hostname.".txt") or die("Cannot open config file : $!");
        print FH @running_config;
        close FH;
        $s->end_privileged;
    };
    if ($@) {
    #when the login details are wrong
        print redirect('../../na/unauthorised.html');
    }
    $s->close;
}

【问题讨论】:

    标签: perl ssh module cisco


    【解决方案1】:

    开发者已经修复了这个错误。

    【讨论】:

      【解决方案2】:

      你确定吗?

      您是否使用您的主机名尝试了此示例代码?

      http://cpansearch.perl.org/src/OLIVER/Net-Appliance-Session-3.120560/examples/example-1.pl

      如果是,您可以创建一个 RT 票,或者您可以尝试联系作者。

      我已经破解了代码,并没有发现任何(太)讨厌的东西。

      问候,

      【讨论】:

      • 我的代码与示例非常相似,除了命令和我需要启用密码。我在第一篇文章中复制了我的代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      相关资源
      最近更新 更多