2

私はperlとstackoverflowに少し慣れていません。もっと親しみやすい言語を使うことができれば、そうするでしょうが、残念ながら、特定の状況によりそれができません。助けてくれてありがとう。

インストールされていないモジュール: Net::SFTP、WWW::CURL、Net::SSH2、Net::SFTP::Foriegn インストールされているモジュール: Net::FTP

モジュールをインストールできません。

Net::FTP を使用できません デフォルトのポートとポート 22 をユーザー名とパスワードで試しました。接続しようとしたときに他のボックスのログから返されるのは、「xx.xx.xx.xx から識別文字列を受信しませんでした」ということだけです。また、コマンド ラインで FTP を使用できず、タイムアウトします。

$ftp = Net::FTP->new($box,Port=>22, Debug => 0)
or die print "Error: Cannot connect";
$ftp->login($userBox,$passBox)
or die print "Error: Cannot login";
$ftp->cwd()
or die print "Error: Cannot change to Root";
$ftp->cwd($dir)
or die print "Error: Cannot change to selected directory";
if($copyfile ne "" && $dir ne "")
{
$ftp->put($copyfile, $copyfile);
}
$ftp->quit();

FTPではなくLinuxコマンドラインからSFTPを手動で使用できるため、システムコマンドを使用して他のボックスにSFTPを送信しようとしています。他のボックスのログには、「xx.xx.xx.xx によって接続が閉じられました」とだけ表示されます。

system('sftp '.$userBox.'@'.$box.' ENDOFINPUT'
.$passBox.'ENDOFINPUT
cd ../../../
put '.$filename.' '.$dir.'
exit
ENDOFINPUT');

誰かが私の問題を解決する方法を知っていれば、それは素晴らしいことです:)

4

2 に答える 2

1

別の方向からアプローチしてみましょう...「モジュールをインストールできない」と言うとき、それは単に root 権限がないからですか? その場合は、代わりにユーザー アカウントでローカルにインストールできます

マシンにローカルにインストールするためのインターネット接続がない場合は、同じ手法を使用して別のボックスにインストールし、インストールしたローカル ディレクトリ全体を gzip してターゲット マシンにコピーします。 「 use lib」ステートメントを追加して、スクリプトからそれらを取得します。

于 2012-11-06T22:14:30.023 に答える
0

$passBox に相当するものがシェルで機能したことは確かですか?

キーペアを使用してパスワードなしの接続をセットアップできるはずです。これにより、その問題はすぐに解消されます。

于 2012-11-06T18:46:39.723 に答える