Net :: SCP / Net :: SCP :: erwarten - wie mit Passwort vs-Key-Authentifizierung umgehen
Frage
Ich habe ein Skript, das auf verschiedenen Clients arbeitet, und Notwendigkeit, SCP-Dateien auf verschiedenen Hosts. Je nach Kombination von Client und Server, kann ich benötige Passwort-Authentifizierung oder Public-Key-Authentifizierung verwenden. Ich kann wirklich nicht im Voraus wissen, welche zu benutzen.
Es gibt 2 CPAN-Bibliotheken für SCP, dass ich benutze:
- Net :: SCP: Arbeiten mit Authentifizierung über öffentliche Schlüssel nur
- Net :: SCP :: erwarten: Arbeiten mit Passwort-Authentifizierung nur
Das Problem ist, dass weder die Bibliothek Werke für beide Authentifizierungen, und ich weiß nicht, was man im Voraus zu verwenden. Kennen Sie irgendeine Weise zur Arbeit mit beiden Authentifizierungsschemata?
Lösung
Versuchen Sie eine und nicht auf die anderen:
#! /usr/bin/perl
use warnings;
use strict;
use Net::SCP qw/ scp /;
use Net::SCP::Expect;
my @hosts = qw/ host1 host2 host3 /;
my $user = "YOUR-USERNAME-HERE";
my $pass = "PASSWORD-GOES-HERE";
my $file = "file-to-copy";
foreach my $host (@hosts) {
my $dest = "$host:$file";
my $scp = Net::SCP->new($host, $user);
unless ($scp->scp($file => $dest)) {
my $scpe = Net::SCP::Expect->new;
$scpe->login($user, $pass);
local $@;
eval { $scpe->scp($file => $dest) };
next unless $@;
warn "$0: scp $file $dest failed:\n" .
"Public key auth:\n" .
" $scp->{errstr}\n" .
"Password auth:\n" .
" $@\n";
}
}
Andere Tipps
versuchen Net :: OpenSSH
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow