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

时间:2018-06-22 03:11:26

标签: perl sftp

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

  

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

# $rSelectInfoRef = (the connection infomation from oracle)
$host = $rSelectInfoRef->[0][2];
$user = $rSelectInfoRef->[0][3];
$password = $rSelectInfoRef->[0][4];

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];
#$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;
}

1 个答案:

答案 0 :(得分:0)

我认为问题出在变量没有被正确评估。试试看它是否有效:

void real_func(const vector<int>& v) {
    cout << "size: " << v.size() << endl;// the output is 3, 3
}