• Publicidad

Capturar logs en script - perl

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

Capturar logs en script - perl

Notapor milko » 2008-10-15 05:08 @256

Buenos días, tengo un script realizado en perl que hace backups de las configuraciones startup de Cisco. El script funciona bien y realiza lo que quiero pero deseo añadirle una función a la misma, es la siguiente: deseo que cuando haya algún problema en la conexión, ya sea el servidor en el cual está cargado el script desea conectarse al host remoto y éste no responde como si hubiese algún problema al lanzar el tftp, saliese en un fichero esos errores para posteriormente poder analizarlos y ver dónde está el problema. Necesito ésto ya que administro cientos de equipos y con lo que tengo montado me es imposible seguir host por host. El código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use strict;
use Expect;

my $telnetUsername = "userx";
my $telnetPassword = "passy";
my $telnetPasswordEna = "passena";
my @telnetServer = ("server1", "server2", "server3");
my $fileToFetch = "startup-config";
my $tftpServer = "IP_tftp_server";
my $timeout = 10;

for (my $i=0; $i<3; $i++) {
        print "Conexióon $telnetServer[$i]\n";

my $command = 'telnet';

# Create the Expect object
my $exp = Expect->spawn($command, $telnetServer[$i]) or die "Cannot spawn telnet command \n";

$exp->log_file("testlog");

$exp->expect($timeout, ["Username:"]);
$exp->send("$telnetUsername\n");

$exp->expect($timeout, ["Password:"]);

# Sent the telnet password
$exp->send("$telnetPassword\n");

# Wait for telnet prompt
$exp->expect($timeout, [" >"]);

# mode super-user
$exp->send("ena\n");
$exp->send("$telnetPasswordEna\n");

#mete los valores oportunos
$exp->send("copy startup-config tftp:\n");
#$exp->expect($timeout, ["Address or name of remote host []?"]);
$exp->send("$tftpServer\n");
$exp->expect($timeout, ["Destination filename [ ]?:"]);
$exp->send("\n");


$exp->send("exit\n");

$exp->soft_close();
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Tengo configurada la siguiente línea: $exp->log_file("testlog");

Esa línea hace como una especie de print de todo lo que hace el script, eso no lo deseo.

Espero que me puedan ayudar, muchas gracias a todos de antemano.

Un cordial saludo.
milko
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2008-10-07 08:32 @397

Publicidad

Notapor explorer » 2008-10-15 11:06 @504

Hummm... he mirado en Net::Telnet::Cisco::IOS y no veo nada relacionado con los errores. En cambio, Net::Telnet::Cisco sí que tiene el método errmsg().

Otra opción es parsear todo lo que te llega, distinguir lo que es error, y sacarlo a un fichero que antes hayas abierto...

Hay algunos ejemplos, en estos foros, de estos dos módulos, pero creo recordar que no hay nada referente a errores...
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

Notapor milko » 2008-10-16 02:05 @128

Muchas gracias explorer, miraré en el foro.

Un saludo.
milko
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2008-10-07 08:32 @397


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 14 invitados

cron