• Publicidad

Gestionar conexiones por sftp erroneas

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Gestionar conexiones por sftp erroneas

Notapor erjuak » 2013-05-24 06:29 @312

Buenas.

Tengo un script que tiene que hacer dos conexiones sftp a dos servidores distintos.

Lo estoy haciendo con el módulo Net::SFTP::Foreign

Lo he hecho con las siguientes líneas:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  my $sftp_rep = Net::SFTP::Foreign->new(host=>$host_rep, user=>$user_rep, password=>$passwd_rep, port=>$port_rep);
  2.          $sftp_rep->die_on_error("unable to connect to remote host");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Así es como lo tengo puesto inicialmente.

Entonces, inicialmente, si hay algún posible error en la conexión del ssh, con este código, el script lo que hace es salir del script. Entiendo que es por la orden de die().

Lo que a mi me interesa, es que cuando esto falle, no salga del script sino que siga ejecutando las siguientes ordenes o comandos, ya que mi script tiene una segunda parte de código que quiero ejecutar, si la conexión por ssh se hace o no.

Estoy mirando en CPAN y la verdad que no lo tengo muy claro cómo hacerlo. ¿Alguien me podría dar alguna idea?

Muchas Gracias.
erjuak
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2013-03-07 11:52 @536

Publicidad

Re: Gestionar conexiones por sftp erroneas

Notapor explorer » 2013-05-24 13:17 @595

Si te fijas en la página de manual, puedes decidir qué hacer si ocurre un fallo de conexión.
Manejo de errores

La mayor parte de los métodos disponibles de este paquete devuelven undef en caso de fallo, y un valor verdadero o los datos solicitados, en caso de éxito. Se debe usar explícitamente $sftp->error para comprobar errores después de cada llamada a los métodos. Por ejemplo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sftp = Net::SFTP::Foreign->new($servidor);
$sftp->error and die "incapaz de conectar al servidor remoto: " . $sftp->error
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Así que solo necesitas hacer eso: comprobar el resultado, y decidir qué hacer en cada caso.

El método die_on_error() hace lo mismo que la línea anterior, así que, efectivamente, hace un die() en caso de producirse un error.

Más información en la sección Error handling de Net::SFTP::Foreign.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Gestionar conexiones por sftp erroneas

Notapor erjuak » 2013-05-27 11:28 @519

¡Hola, explorer!

Muchas gracias por la respuesta, es justamente lo que necesitaba.
Incluso puedo meter más código de forma que podría tratarlo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use strict;
  3. use Net::SFTP::Foreign;
  4. use File::Copy;
  5.  
  6. sub conecta ()
  7. {
  8. my $prueba = 1;
  9. my $sftp_rep = Net::SFTP::Foreign->new(host=>$host_rep, user=>$user_rep, password=>$passwd_rep, port=>$port_rep);
  10. $sftp_rep->error and $prueba = 0 . $sftp_rep->error;
  11. return ($prueba);
  12. }
  13.  
  14. my $conectar=&conecta;
  15.  
  16. if ($conectar == 1){
  17.      print "se ha conectado\n";
  18.          }
  19. else{
  20.      print "NO se ha conectado\n";
  21.          }
  22.  
  23.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¡¡Muchas gracias de nuevo, explorer!!
erjuak
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2013-03-07 11:52 @536


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 66 invitados