Perl -/usr/local/lib64/perl5/Net/SSH2.pm 的散列分配中的奇数个元素

标签 perl ssh hash

我创建了一个通过 ssh 连接到多个设备的 perl。我想通过连接设备来检查 ssh 是否正常工作。

这是我的代码:

#!/usr/bin/perl
use strict;
use warnings;
use Net::SSH2;
use POSIX qw(strftime);

my $date = strftime "%Y%m%d", localtime;

open (OUTPUTS, ">ssh_Success$date.log" );
open (OUTPUTF, ">ssh_Fail$date.log" );

open( SWITCHIP, "ip.txt" ) or die "couldn't open ip.txt";

my $count = 0;

while (<SWITCHIP>) {
    chomp($_);
    my $hostname = $_;
    my $tl     = 0;
    my $t      = Net::SSH2->new(
        #Host => $hostname,
        #Prompt =>
            #'/(?m:^(?:[\w.\/]+\:)?[\w.-]+\s?(?:\(config[^\)]*\))?\s?[\$#>]\s?(?:\(enable\))?\s*$)/',
        #debug=>0
        #Timeout => 30,
        #Errmode => 'return'
        '$hostname', timeout => 30
    ) or $tl = 1;

    my @output = ();

    if ( $tl != 1 ) {
        print "$hostname SSH success\n"; # for printing it in screen
        print OUTPUTS "$date $hostname SSH success\n"; # it will print it in the log_Success.txt
    }
    else {
        my $sshstat = "SSH failed";
        print "$hostname $sshstat\n"; # for printing it in screen
        print OUTPUTF "$date $hostname $sshstat\n"; # it will print it in the log_Fail.txt
    }

    $count++;
}
close(SWITCHIP);
close(OUTPUTS);
close(OUTPUTF);

我得到一个奇怪的错误 - 哈希分配中的奇数个元素:
Odd number of elements in hash assignment at /usr/local/lib64/perl5/Net/SSH2.pm
1.1.1.1 SSH success
Odd number of elements in hash assignment at /usr/local/lib64/perl5/Net/SSH2.pm
2.2.2.2 SSH success
Odd number of elements in hash assignment at /usr/local/lib64/perl5/Net/SSH2.pm
3.3.3.3 SSH success

最佳答案

该模块的constructor ( new ) expects a %hash .这意味着您必须提供一个包含偶数个元素的列表或一个散列变量,以便 new可以用它们构建它需要的哈希。当将奇数个元素分配给哈希时,会打印一个警告(您会得到)。

提供的列表是选项值对,为方便起见写为 option => value, ... (即使 option, value ... 也可以)。

记录的选项是:timeout , trace , debug , compress , 和 sigpipe .因此,您无法在构建对象时提供主机名。

这是通过 connect 完成的。

my $t = Net::SSH2->new( timeout => 30 ) or $tl = 1;

$t->connect( $hostname ) or $t->die_with_error;

请参阅文档了解 connect 的其他选项。支持。

关于Perl -/usr/local/lib64/perl5/Net/SSH2.pm 的散列分配中的奇数个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272545/

相关文章:

mysql - 使用utf8从perl脚本访问latin1 mysql数据库

正则表达式问题 - Perl - 搜索字符串的最后一个实例

linux - 从 Apache/Nginx Access.log 检索用户代理

linux - Rsync 到 Amazon Ec2 实例

c - 哈希函数中的 get16bits 宏

linux - Perl 中的标量 - 可以在整个脚本中导出它们吗

linux - 为什么我的 mod_perl 脚本会卡住我的服务器?

ios - 从 ipad 本地主机上的 Web 服务器运行 jupyter notebook

encryption - 使用多个密码解密

Perl:对其他散列使用引用 has