Perl en Español

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

Mostrar log en página web

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Jue Jul 12, 2007 4:37 pm
rklz
Perlero Nuevo
Perlero Nuevo
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
Mostrar log en página web Responder citando

Buenas, les comento mi problema, tengo este pequeño programita, que me busca en el auth.log por posibles entradas 'failed', mi pregunta es cómo hacer para mostrarlo en una página web con CGI, porque al poner print "Content-type: text/html\n\n";, no muestra nada. Apache soporta CGI y el error no muestra nada, les dejo el código:

Perl:
use warnings;
use diagnostics;

open (FI, "/var/log/auth.log") or die "Unable to open file : $! \n";

@file = <FI>;

foreach (@file) {
    print $_ if ($_=~ /failed/);
}
Mensaje Jue Jul 12, 2007 5:57 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Responder citando

En la mayor parte de los sistemas Unix y Linux, el fichero /var/log/auth.log no tiene permiso de lectura para los usuarios normales, entre ellos, el usuario que ejecuta el servidor web.

Consulta el fichero de actividad (log) de errores del web para que veas si el cgi ha sacado algo (el mensaje que pones en el die). Ahí debería dar el por qué ha fallado, pero lo más seguro es que no tengas permiso de lectura. La solución es cambiar los permisos del fichero.

Para comprobarlo, agrega al CGI el módulo CGI::Carp para que saque los errores en la página web, además del fichero de registro de actividad.

En mi CGI Mínimo verás lo fácil que es hacer un cgi con los módulos CGI y CGI::Carp.
Mensaje Jue Jul 12, 2007 11:13 pm
rklz
Perlero Nuevo
Perlero Nuevo
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
Responder citando

Este es mi código :

Perl:
#!/usr/bin/perl

use CGI /:'standard'/;
use CGI::Carp qw(fatalsToBrowser);


print
        header,
        start_html('Probando logs'),
        h1('Testando'),
        'hr',
        p("si ves esto funca"),
        'hr';

open (FI, "/var/log/auth.log") or die "unable to open log : $!\n";

@file = <FI>;


foreach (@file) {
        print $_ if ($_ =~ /invalid/);
        }
print end_html();


y el error de Apache arroja esto :

Código:
index.cgi: Undefined subroutine &main::header called at /usr/lib/cgi-bin/index.cgi line 7


ayuda Sad

¡ Muchas gracias !
Mensaje Vie Jul 13, 2007 2:53 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Responder citando

Quita las comillas simples a standard y prefija los '/' con un qw (o cópialo de mi CGI Mínimo).
Mensaje Lun Jul 23, 2007 12:34 am
rklz
Perlero Nuevo
Perlero Nuevo
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
Responder citando

hola, mi código es el siguiente:

Perl:
#!/usr/bin/perl

use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);

print
        header,
        start_html('Probando logs'),
        h1('Testando'),
        "hr",
        p("si ves esto funca"),
        "hr";

open (FI, "/var/log/auth.log") or die "unable to open log : $!\n";

@file = <FI>;


foreach (@file) {
        print $_ if ($_ =~ /invalid/);
        }
print end_html();


La página carga, pero lo único que muestra es esto:

Código:
Testeando

hr

Si ves esto funca
hr


Ni rastros del log y los errores de Apache no arroja nada. ¿Alguna idea?
Mensaje Lun Jul 23, 2007 1:46 am
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
Responder citando

¿Cuántas líneas lee FI? Sácalo con print $#file;

¿invalid es así, todo en minúsculas?
Mensaje Lun Jul 23, 2007 8:12 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

Hola:

Quizá deberías de intentar hacer tu expresión para que no le importe las mayúsculas y minúsculas, solamente encontrar la palabra 'invalid', para ello debes de ponerla de la siguiente manera:

Perl:
/invalid/i


El otro detalle, es que tus "hr" los deberías de poner como <hr>.


Saludos
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group