Comment puis-je transférer un fichier en utilisant scp sans mot de passe à partir d'un script Perl?

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

  •  26-09-2019
  •  | 
  •  

Question

Je suis en train d'écrire un script Perl qui a besoin de transférer des fichiers entre les ordinateurs utilisant scp. Je sais que sur l'authentification à clé publique, mais je dois le script pour être entièrement automatisé, donc je ne peux pas visiter les machines à mettre en place les clés avant que le script est exécuté.

Est-il possible de passer soit le mot de passe scp à partir du script Perl ou configurer les clés à partir du script Perl?

Ce script sera exécuté dans le cadre d'un script de construction qui reimages aussi le disque dur que je dois exécuter le script. Donc, je ne peux pas être là pour mettre en place des clés à chaque fois que le projet est construit.

Était-ce utile?

La solution

Vous pouvez utiliser le Perl Attendez-vous le module , voir un exemple au forum consultants Well House .

Sa documentation a telnet exemple qui est facilement changé pour SSH.

Net :: SSH :: Expect est un autre module Perl pour faire exactement ce que tu veux. Je ne l'ai pas utilisé celui-ci auparavant, cependant.

Autres conseils

Vous pouvez utiliser Net: : SSH :: Perl . Ci-dessous l'exemple de code que vous pouvez utiliser.

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

Ce code va simplement exécuter la « commande » donnée sur la machine distante et vous donner la sortie sur votre système local. Ainsi, au lieu de scp, vous pouvez utiliser ce script avec la commande « cat » pour capturer la sortie du « nom du fichier chat » sur le système local et rediriger la sortie dans le fichier sur le système local.

Hope this helps.

Faire usage de ssh-agent. Et si vous utilisez Gnome, Gnome agent SSH est Keyring merveilleux.

Il suffit de créer des clés qui ne sont pas des mots de passe.

Vous pouvez utiliser un SSH-Key (sans mot de passe).

#!/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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top