4

scp を使用してコンピューター間でファイルを転送する必要がある Perl スクリプトを作成しています。公開鍵認証については知っていますが、スクリプトを完全に自動化する必要があるため、スクリプトを実行する前にマシンにアクセスして鍵を設定することはできません。

Perl スクリプトから scp にパスワードを渡すか、perl スクリプト内からキーを設定する方法はありますか?

このスクリプトは、スクリプトを実行するために必要なハード ドライブのイメージを再作成するビルド スクリプトの一部として実行されます。そのため、プロジェクトがビルドされるたびにキーを設定するためにそこにいることはできません。

4

6 に答える 6

2

ssh-agent を使用します。また、Gnome を使用している場合は、Gnome Keyring SSH Agent が優れています。

于 2010-09-29T20:28:34.470 に答える
1

Perl Expectモジュールを使用できます。Well House コンサルタント フォーラム の例を参照してください。

そのドキュメントには、SSH 用に簡単に変更できるtelnet の例があります。

Net::SSH::Expectは、まさにあなたが望むことを行うためのもう 1 つの Perl モジュールです。ただし、これは以前に使用したことがありません。

于 2010-09-29T19:04:09.397 に答える
0

パスワードのないキーを作成するだけです。

于 2010-09-29T18:55:10.190 に答える
0
#!/usr/bin/perl -w
######################################################
#                                                    #
#                                #
#       Script to send files to server    #
#               Author: Jurison Murati               #
#                                   #
######################################################

use strict;
use Net::SCP::Expect;
use File::Copy;
use IO::Compress::Gzip qw(gzip $GzipError);
my $host = "192.168.0.1";
my $user = "user";
my $pwd = "password";
my $RemoteDir = </nodes>;
my $file;
my $displaydate= `date +'%Y%m%d%H%M%S'`;
print "Filloi dergimi date $displaydate\n";
my $scp = Net::SCP::Expect->new(host=>$host,user=>$user,password=>$pwd,recursive=>1);
my $dir = '/arch';
        opendir(DIR, $dir) or die $!;
while (my $file = readdir(DIR)) {
next if ($file =~ m/^\./);
        $scp->scp("$dir/$file","$RemoteDir") or die $scp->{errstr};
print "file $dir/$file moved on date $displaydate\n";
}
exit 0;
于 2012-09-27T09:28:02.437 に答える