Net :: SCP / Net :: :: SCP esperar - cómo tratar con contraseña frente a la autenticación de clave

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

  •  19-09-2019
  •  | 
  •  

Pregunta

Tengo un guión que funciona en diferentes clientes, y la necesidad de archivos de CPS a diferentes hosts. Dependiendo de la combinación de cliente y servidor, es posible que tenga que utilizar la autenticación de contraseña o la autenticación de clave pública. Realmente no puedo saber de antemano cuál de ellos utilizar.

Hay 2 bibliotecas CPAN para SCP que utilizo:

  • Net :: SCP: funciona con la autenticación de clave pública sólo
  • Net :: :: SCP esperar: funciona con autenticación de contraseña única

El problema es que ni las obras de la biblioteca para ambas autenticaciones, y no sé cuál usar con antelación. ¿Sabe usted de cualquier manera de trabajar con ambos esquemas de autenticación?

¿Fue útil?

Solución

Pruebe uno y dejar al otro:

#! /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";
  }
}

Otros consejos

tratar Net :: OpenSSH

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top