Net :: SCP / Net :: SCP :: erwarten - wie mit Passwort vs-Key-Authentifizierung umgehen

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

  •  19-09-2019
  •  | 
  •  

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?

War es hilfreich?

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
scroll top