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の実行に問題があります

SCP自体から取得するNet::SCP::Expect文字通りのエラーメッセージの前に追加されるので、この場合は

接続を続行してもよろしいですか(はい/いいえ)?

これは通常、接続しているホストSCPがまだ不明であるために発生します。

NET :: SCP :: ExpectのCPANドキュメントで説明されているauto_yesように、このエラーを回避したい場合は1に設定する必要がありますが、すでにそれを行っているようです。

それでも問題が解決しない場合は、を上げることを検討timeout_autoしてください。デフォルトは1秒ですが、SCPが「よろしいですか」という質問をするのに時間がかかる場合(たとえば、ホストのDNS検索に時間がかかるため)、十分ではない可能性があります。

于 2011-02-21T16:41:15.687 に答える