2

这就是我正在做的

my $username = "user";
my $password= "pass";
my $host="xxx.xxx.xxx.xxx";

my $scpe =  Net::SCP::Expect->new(user => $username,
                                    password => $password,
                                    preserve => 1,
                                   recursive => 1,
                                  verbose=>1,
                  auto_yes=>1);

$scpe->scp("$file","$host:./drop/drop.txt");

当我运行此代码时没有错误,我使用的是 unix 框,$file在我的目录中并具有完全权限,我也已将目录更改为 unix 框中的 temp 但是当其他人运行此代码时,他们得到

执行 scp 时出现问题:您确定要继续连接(是/否)?在 scp.pl 第 242 行

我很困惑为什么会这样,因为我没有收到这个错误

4

1 回答 1

0

简短的回答:

提高timeout_auto价值:

my $scpe =  Net::SCP::Expect->new(user => $username,
                                    password => $password,
                                    preserve => 1,
                                   recursive => 1,
                                  verbose=>1,
                                  timeout_auto=>10, #For example - 5 should probably be plenty
                  auto_yes=>1);

长答案。

执行 scp 的问题

Net::SCP::Expect它从 SCP 本身获得的文字错误消息之前的内容,所以在这种情况下

您确定要继续连接(是/否)?

这通常是因为 SCP 正在连接的主机未知。

auto_yes如果你想避免这个错误,你应该设置为 1 ,因为 NET::SCP::Expect 的 CPAN 文档解释了,但我看到你已经在这样做了。

如果这没有帮助,请考虑提高timeout_autovalue。它默认为 1 秒,但如果 SCP 提出“你确定”问题需要更长的时间(因为例如主机的 DNS 查找需要更长时间),这可能还不够。

于 2011-02-21T16:41:15.687 回答