Página 1 de 1

scp entre dos máquinas Linux

NotaPublicado: 2012-05-31 10:57 @498
por enric73
Hola, buenas tardes.

Necesito copiar, en Perl, unos ficheros de una máquina Linux a otra.

De momento lo hago en scp en shell: $ scp fitxer.xxx enric-2:/path y luego me pide el login

¿Cómo sería en Perl?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use Net::SCP;
  3. $hostname = "server.ip.address";
  4. $username = "enric";
  5. $file = "temp.dat";
  6. $folder = "/home/$username/";
  7. $scp = Net::SCP->new( { "host"=>$hostname, "user"=>$username } );
  8. $scp->put("$file","$folder$file") or die $scp->{errstr};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Gracias

Re: scp entre dos máquinas Linux

NotaPublicado: 2012-05-31 11:11 @508
por explorer
En la propia página de manual de Net::SCP, en la sección de preguntas más frecuentes, se indica que no se puede indicar una contraseña, al menos con ese módulo, así que la opción es la de usar claves RSA o DSA entre las máquinas, lo cual está bien porque te facilitará también el entrar por ssh en ellas.

Otra opción es usar Net::SCP::Expect (como también indica la misma página de manual.

Otra opción, con Net::OpenSSH (que a su vez requerirá tener instalado el módulo IO::Pty) Este módulo usará el comando scp y ssh del sistema.

Re: scp entre dos máquinas Linux

NotaPublicado: 2012-05-31 12:19 @555
por enric73
Gracias explorer,

De momento he escrito esto, buscando por la red

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. use Net::SSH::Perl;
  4.  
  5. my $host = "1xx.xx.xx.xxx";
  6. my $user = "enric";
  7. my $password = "bruce";
  8.  
  9. #-- set up a new connection
  10. my $ssh = Net::SSH::Perl->new($host);
  11. #-- authenticate
  12. $ssh->login($user, $pass);
  13. #-- execute the command
  14. my($stdout, $stderr, $exit) = $ssh->cmd("scp /home/$user/Desktop");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En este script, ¿dónde le digo la carpeta donde está el archivo y dónde se ha de guardar?

Gracias