Wie kann ich eine Datei übertragen, ohne ein Passwort aus einem Perl-Skript mit scp?

StackOverflow https://stackoverflow.com/questions/3824878

  •  26-09-2019
  •  | 
  •  

Frage

Ich schreibe ein Perl-Skript, dass der Bedarf von Dateien zwischen Computern übertragen scp. Ich weiß, über Public-Key-Authentifizierung, aber ich brauche das Skript vollständig automatisiert werden, so dass ich nicht die Maschinen die Schlüssel zur Einrichtung besuchen kann, bevor das Skript ausgeführt wird.

Gibt es eine Möglichkeit, entweder das Passwort zu scp aus dem Perl-Skript übergeben oder die Schlüssel aus dem Perl-Skript einrichten?

Dieses Skript wird im Rahmen eines Build-Skript ausgeführt werden, der auch die Festplatte reimages Ich brauche das Skript zu laufen. Also ich nicht da sein kann einzurichten Schlüssel jedes Mal das Projekt gebaut wird.

War es hilfreich?

Lösung

könnten Sie die Perl Erwarten Modul finden Sie unter ein Beispiel an Well House Berater Forum .

Die Dokumentation hat ein telnet Beispiel die für SSH leicht geändert wird.

Net :: SSH :: Erwarten ist ein weiteres Perl-Modul genau das zu tun was Sie wollen. Ich habe nicht dieses bisher verwendeten, though.

Andere Tipps

Sie können mit Net: SSH :: Perl: . Unten ist der Beispielcode Sie verwenden können.

#!/usr/bin/perl -w
use strict;
use Net::SSH::Perl
my $cmd = 'command';
my $ssh = Net::SSH::Perl->new("hostname", debug=>0);
$ssh->login("username","password");
my ($stdout,$stderr,$exit) = $ssh->cmd("$cmd");
print $stdout;

Mit diesem Code wird der angegebene ‚Befehl‘ auf Remote-Computer und geben Sie die Ausgabe auf dem lokalen System einfach laufen. Also, statt scp, können Sie dieses Skript mit dem Befehl ‚Katze‘ verwenden, um die Ausgabe von ‚cat Dateinamen‘ zu erfassen auf lokales System und leiten Sie die Ausgabe in Datei auf lokales System.

Hope, das hilft.

Nutzen Sie ssh-agent. Und wenn Sie verwenden Gnom, Gnome Keyring SSH-Agent ist wunderbar.

Just Schlüssel erstellen, die keine Passwörter.

Sie können mit einem SSH-Key (ohne Passwort).

#!/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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top