• Publicidad

Estadísticas de accesos a ficheros

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

Estadísticas de accesos a ficheros

Notapor aseret » 2009-06-14 12:43 @571

Hola, soy nueva en esto y agradecería que me ayudaseis si podéis.

Tengo que hacer un script en Perl que me cuente el número de accesos en un día de una serie de ficheros comprimidos. Podría ser descomprimiendo y contando el número de líneas que tenga el fichero del día que quieras buscar.

¿Cómo podría hacerlo?

Además los ficheros son backups y hay algunos que se mezclan 2 fechas... ¿Qué hago?

Muchas gracias.
aseret
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-06-14 12:37 @567

Publicidad

Notapor explorer » 2009-06-14 14:04 @628

Bienvenido a los foros de Perl en Español, aseret.

Faltan datos para resolver el problema, pero se puede deducir algo, como que son ficheros de registro de actividad.

¿Cómo se llaman esos ficheros y dónde están? ¿A qué ritmo rotan, diariamente? ¿Cómo se llaman los ficheros que quieres controlar? ¿Cómo te indican la fecha a analizar? ¿O hay que analizar la fecha del día? ¿O la de ayer?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor aseret » 2009-06-14 14:10 @632

Muchas gracias por tu respuesta, la verdad es que estaba muy incompleto
un ejemplo del nombre de los ficheros es el siguiente:

Código: Seleccionar todo
--w-------  1 bklog bklog  54569438 jun 11 09:55 cint-prx01_main__2009-06-11-06.40.16.log.bz2
--w-------  1 bklog bklog  58527905 jun 11 11:15 cint-prx01_main__2009-06-11-07.55.15.log.bz2
--w-------  1 bklog bklog  62973951 jun 11 12:32 cint-prx01_main__2009-06-11-09.15.46.log.bz2
--w-------  1 bklog bklog  62346520 jun 11 13:46 cint-prx01_main__2009-06-11-10.32.14.log.bz2
--w-------  1 bklog bklog  52623298 jun 11 15:31 cint-prx01_main__2009-06-11-11.46.16.log.bz2
--w-------  1 bklog bklog  44920673 jun 11 20:25 cint-prx01_main__2009-06-11-13.31.45.log.bz2
--w-------  1 bklog bklog  16273705 jun 11 23:59 cint-prx01_main__2009-06-11-18.25.08.log.bz2
--w-------  1 bklog bklog  43604381 jun 12 08:22 cint-prx01_main__2009-06-11-22.00.00.log.bz2
--w-------  1 bklog bklog  28955081 jun 12 09:37 cint-prx01_main__2009-06-12-06.22.33.log.bz2


Se puede ver que hay varios archivos comprimidos del mismo día, el 11, pero que también en el día 12 podemos encontrar aún logs del día anterior.
La idea es que sea un script al que le pases una fecha que quieras buscar y el te devuelva el número de accesos que han hecho los usuarios (hay un acceso por día), la fecha es el primer campo de la línea.
No sé si respondo así a tus preguntas...

Muchas gracias otra vez.
aseret
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-06-14 12:37 @567

Notapor explorer » 2009-06-14 14:22 @640

Faltan datos... no nos muestras cómo son los ficheros comprimidos por dentro. Dices que el primer campo es la fecha, pero no nos dices cuál es el resto de campos. ¿Dónde se define el nombre del usuario? ¿Y el nombre del fichero a controlar?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor aseret » 2009-06-14 14:33 @648

Realmente sólo me interesa la fecha, no el nombre de usuario porque vendrán muchos, sólo necesito saber cuantos accesos se han realizado. Pongo un ejemplo de línea de todas formas:

Código: Seleccionar todo
2009-06-14 12:56:46 37 10.63.36.203 200 TCP_MISS 9392 1443 GET http www.google.com 80 /friendconnect/profile/picture/UHHeyOfviyzF6LGP-jhonsan - DIRECT www.google.com image/png http://r1rk9np7bpcsfoeekl0khkd2juj27q3o.friendconnect.gmodules.com/gadgets/ifr?url=http%3A%2F%2Fwww.google.com%2Ffriendconnect%2Fgadgets%2Fmembers.xml&container=peoplesense&parent=http%3A%2F%2Fwww.chicasmil.com%2F&mid=0&view=profile&libs=opensocial-0.8%3Askins&v=0.352.1&lang=es&communityId=05312472294625874975&caller=http%3A%2F%2Fwww.chicasmil.com%2F#st=1989649449& "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.1)" OBSERVED "none" - 192.168.17.23


y el nombre del archivo es con el siguiente formato

cint-prx01_main__2009-06-11-06.40.16.log.bz2

Tendría que buscar por ejemplo todos los accesos que se han realizado el día 2009-06-11.

Muchas gracias de nuevo.
aseret
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2009-06-14 12:37 @567

Notapor explorer » 2009-06-14 14:58 @665

Vale... entonces entiendo que solo interesa el campo de la fecha, por cada línea. Como decías algo de hacer estadísticas por acceso a ficheros, pensaba que te referías a hacer estadísticas de los ficheros registrados dentro de los ficheros comprimidos.

Para resolver el problema, no necesitas ni hacer un programa. Te vale con usar el programa bzgrep, haciendo una línea como esta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
bzgrep -c -e '^2009-06-11' *.bz2
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Con '-c' indicamos que estamos interesados solo en el total de accesos. Con '-e' indicamos la expresión regular que queremos buscar: algo que comience (^) por la fecha que buscamos. Y como argumentos le pasamos todos los ficheros bz2 disponibles.

El resultado es algo como esto:
Código: Seleccionar todo
cint-prx01_main__2009-06-12-06.22.33.log.bz2:232
cint-prx01_main__2009-06-11-22.00.00.log.bz2:15003
cint-prx01_main__2009-06-11-18.25.08.log.bz2:82

Ahora solo queda sacar el total, sumando esas cifras. Lo puedes hacer con un miniprograma en perl:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
bzgrep -c -e '^2009-06-11' *.bz2|perl -aln -F':' -e '$total += $F[1]; END { print $total }'
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y ya sale el total de accesos de ese día.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14482
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado