Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Capturar logs en script - perl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Mie Oct 15, 2008 4:08 am
milko
Perlero Nuevo
Perlero Nuevo
Registrado: 07 Oct 2008
Mensajes: 7
Capturar logs en script - perl Responder citando

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:

Perl:
#!/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();
}


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.
Mensaje Mie Oct 15, 2008 10:06 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4239
Ubicación: Valladolid, España
Responder citando

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...
Mensaje Jue Oct 16, 2008 1:05 am
milko
Perlero Nuevo
Perlero Nuevo
Registrado: 07 Oct 2008
Mensajes: 7
Responder citando

Muchas gracias explorer, miraré en el foro.

Un saludo.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group