Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我在perl脚本中使用Net::SFTP时出错(远程主机关闭连接)_Perl_Sftp - Fatal编程技术网

我在perl脚本中使用Net::SFTP时出错(远程主机关闭连接)

我在perl脚本中使用Net::SFTP时出错(远程主机关闭连接),perl,sftp,Perl,Sftp,当我使用Net::SFTP连接到我的SFTP服务器时,我遇到了一个奇怪的错误。 我的脚本从oracle获取SFTP连接信息,然后使用Net::SFTP连接到SFTP服务器。 当我运行perl脚本时,它失败了,出现以下错误: 远程主机关闭了连接。在/usr/local/lib64/perl5/Net/SSH/Perl/AuthMgr.pm 但是,当我直接分配这些connect变量时,脚本会成功运行。我没有更改连接信息。这让我很困惑,相同的值却不同的结果 #$host = $rSelectInfoR

当我使用Net::SFTP连接到我的SFTP服务器时,我遇到了一个奇怪的错误。 我的脚本从oracle获取SFTP连接信息,然后使用Net::SFTP连接到SFTP服务器。 当我运行
perl
脚本时,它失败了,出现以下错误:

远程主机关闭了连接。在/usr/local/lib64/perl5/Net/SSH/Perl/AuthMgr.pm

但是,当我直接分配这些connect变量时,脚本会成功运行。我没有更改连接信息。这让我很困惑,相同的值却不同的结果

#$host = $rSelectInfoRef->[0][2];
#$user = $rSelectInfoRef->[0][3];
#$password = $rSelectInfoRef->[0][4];

$host = "168.16.5.110";
$user = "test";
$password = "000000";
print "[DEBUG] $host|$user|$password|\n";

my $sftp;

eval {
    $sftp = Net::SFTP->new($host, user=>$user, password=>$password);
};
if( $@ ) {
    print "[ERROR] $@";
    exit -1;
}

我认为问题在于变量没有得到正确的评估。请尝试以下操作,看看是否有效:

$host = $rSelectInfoRef->[0][2];
my %args = (
    user => $rSelectInfoRef->[0][3],
    password => $rSelectInfoRef->[0][4],
);

my $sftp;

eval {
    $sftp = Net::SFTP->new($host, %args);
};
if( $@ ) {
    print "[ERROR] $@";
    exit -1;
}

您可能想尝试使用。谢谢,哦,您是moudle Net::SFTP::Foreign的作者,几天前,我仍然无法解决问题,所以我尝试了Net::SFTP::Foreign,然后我的脚本成功运行。
$host = $rSelectInfoRef->[0][2];
my %args = (
    user => $rSelectInfoRef->[0][3],
    password => $rSelectInfoRef->[0][4],
);

my $sftp;

eval {
    $sftp = Net::SFTP->new($host, %args);
};
if( $@ ) {
    print "[ERROR] $@";
    exit -1;
}