• Publicidad

Mostrar log en página web

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Mostrar log en página web

Notapor rklz » 2007-07-12 17:37 @775

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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use warnings;
use diagnostics;

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

@file = <FI>;

foreach (@file) {
    print $_ if ($_=~ /failed/);
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Publicidad

Notapor explorer » 2007-07-12 18:57 @831

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.
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 rklz » 2007-07-13 00:13 @051

Este es mi código :

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


y el error de Apache arroja esto :

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


ayuda :(

¡ Muchas gracias !
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Notapor explorer » 2007-07-13 03:53 @203

Quita las comillas simples a standard y prefija los '/' con un qw (o cópialo de mi CGI Mínimo).
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 rklz » 2007-07-23 01:34 @107

hola, mi código es el siguiente:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/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();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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

Código: Seleccionar todo
Testeando

hr

Si ves esto funca
hr


Ni rastros del log y los errores de Apache no arroja nada. ¿Alguna idea?
Avatar de Usuario
rklz
Perlero nuevo
Perlero nuevo
 
Mensajes: 38
Registrado: 2007-05-25 13:28 @603
Ubicación: Rosario, Argentina

Notapor explorer » 2007-07-23 02:46 @157

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

¿invalid es así, todo en minúsculas?
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 kidd » 2007-07-23 09:12 @425

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:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
/invalid/i
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


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


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México


Volver a Intermedio

¿Quién está conectado?

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