Jue Jul 12, 2007 4:37 pm
|
 |
rklz
Perlero Nuevo

|
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
|
|
| Mostrar log en página web |
|
|
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/ );
} |
|
|
|
|

Jue Jul 12, 2007 5:57 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Jue Jul 12, 2007 11:13 pm
|
 |
rklz
Perlero Nuevo

|
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
|
|
|
|
|
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
¡ Muchas gracias ! |
|
Vie Jul 13, 2007 2:53 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
| Quita las comillas simples a standard y prefija los '/' con un qw (o cópialo de mi CGI Mínimo). |
|
Lun Jul 23, 2007 12:34 am
|
 |
rklz
Perlero Nuevo

|
Registrado: 25 May 2007
Mensajes: 38
Ubicación: Rosario, Argentina
|
|
|
|
|
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? |
|
Lun Jul 23, 2007 1:46 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
¿Cuántas líneas lee FI? Sácalo con print $#file;
¿invalid es así, todo en minúsculas? |
|
Lun Jul 23, 2007 8:12 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
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:
El otro detalle, es que tus "hr" los deberías de poner como <hr>.
Saludos |
|
Powered by phpBB © 2001, 2005 phpBB Group
|