• Publicidad

Error al hacer telnet a router Cisco

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

Error al hacer telnet a router Cisco

Notapor Jose_dark » 2010-05-12 04:53 @245

Hola,

Tengo un script que consulta los routers que dispongo. Si el router contesta funciona correctamente, el problema viene si uno de los routers que intento interrogar no contesta ya que al no contestar produce un error que para la ejecución de todo el programa. ¿Cómo puedo introducir un control de errores que no provoque el corte total del programa?

Os pego el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub conexion_Router () {

  my $ipRouter = shift;
  my $loginRouter = shift;
  my $passRouter = shift;
  my $comando = shift;

  my $session = Net::Telnet::Cisco->new(Host => "$ipRouter" , Errmode=>'die',Timeout=>10) or die $session->close;
  $session->login("$loginRouter", "$passRouter");

  my @output = $session->cmd("$comando");

  $session->close;
 
  return (@output);
}
 
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Jose_dark
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-05-12 04:43 @238

Publicidad

Re: Error al hacer telnet a router Cisco

Notapor explorer » 2010-05-12 05:36 @275

Bienvenido a los foros de Perl en Español, Jose_dark.

Prueba a cambiar die() por warn() and return(). Quedaría algo así (no probado):

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
sub conexion_Router () {

  my $ipRouter = shift;
  my $loginRouter = shift;
  my $passRouter = shift;
  my $comando = shift;

  my $session
    =   Net::Telnet::Cisco->new(Host => "$ipRouter" , Errmode=>'die',Timeout=>10)
    or  warn $session->close
    and return;

  $session->login("$loginRouter", "$passRouter");

  my @output = $session->cmd("$comando");

  $session->close;
 
  return (@output);
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Error al hacer telnet a router Cisco

Notapor Jose_dark » 2010-05-12 05:47 @283

Gracias por responder, explorer.

Lo he probado y sigue haciendo lo mismo.

El mensaje que me sale es

problem connecting to "192.168.0.1", port 23: Unknown error <dirección del script>

finalizando con este mensaje la ejecución del script.
Jose_dark
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-05-12 04:43 @238

Re: Error al hacer telnet a router Cisco

Notapor explorer » 2010-05-12 08:07 @380

El módulo Net::Telnet::Cisco es un poco antiguo.

Otra forma de capturar los errores es metiéndoles en un eval().

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @output;

eval {
    my $session
        =   Net::Telnet::Cisco->new(Host => "$ipRouter" , Errmode=>'die',Timeout=>10)
        or  warn $session->close
        and return;

    $session->login("$loginRouter", "$passRouter");

    @output = $session->cmd("$comando");

    $session->close;
};

warn $@ if $@;
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
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: Error al hacer telnet a router Cisco

Notapor Jose_dark » 2010-05-12 08:34 @398

Perfecto, explorer. El eval() captura el error y no para el script. Modificando el script capturo en una matriz la salida del eval() y la retorno al programa.

Muchas gracias por tu atención.

Saludos,
Jose_dark
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2010-05-12 04:43 @238


Volver a Básico

¿Quién está conectado?

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