Sacar registros a partir de una fecha.
Hola a todos. Estoy tratando se sacar los registros de syslog a partir de una fecha. ("cat /var/log/syslog ") ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de grep, y no encuentro nada que lo pueda hacer. Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero al parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo datos en dicho fichero. -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpp5B31hIiIK.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
Mensaje original Asunto: Re: Sacar registros a partir de una fecha. De: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> Fecha: Sab, 12 de Noviembre de 2005, 11:08 pm Para: "Pablo Braulio" <[EMAIL PROTECTED]> -- con un solo comando no creo que puedas hacerlo, vas a tener que hacerte un script, quizás combinando grep con awk y printf (lo usual para estas cosas)..no sé, pero lo que me crea dudas es que quieres decir con que al mover syslog el sistema sigue escribiendo en ese fichero, y que no lo vuelve a crear? creo que no he entendido muy bien lo que has querido decir. responder una pregunta con otra pregunta es una putada , lo sé. :) On Sab, 12 de Noviembre de 2005, 10:28 pm, Pablo Braulio dijo: > Hola a todos. > > Estoy tratando se sacar los registros de syslog a partir de una fecha. ("cat /var/log/syslog ") > > ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de grep, y > no encuentro nada que lo pueda hacer. > > Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero al > parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo datos en dicho fichero. > -- > Saludos. > Pablo. > > Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 > Jabber: bruli(at)myjabber(dot)net > -- Un Saludo. Best Regards. Angel C.Camino -- Un Saludo. Best Regards. Angel C.Camino -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
El Sábado, 12 de Noviembre de 2005 23:08, [EMAIL PROTECTED] escribió: > con un solo comando no creo que puedas hacerlo, vas a tener que hacerte un > script, quizás combinando grep con awk y printf (lo usual para estas > cosas)..no sé, pero lo que me crea dudas es que quieres decir con que al > mover syslog el sistema sigue escribiendo en ese fichero, y que no lo > vuelve a crear? creo que no he entendido muy bien lo que has querido > decir. > > responder una pregunta con otra pregunta es una putada , lo sé. :) > Lo que quiero es hacer un script para esto. Ya tengo uno iniciado que me saca los valores que quiero del syslog. El problema es que me saca todos los campos que yo quiero del syslog, sin poder filtrar por horas. Es decir. Si ejecuto el script (en el cron) cada hora me repite demasiados datos. Si se ejecuta a las 16:00 horas (p.e.), me sacará todos los valores desde las 6:33 horas hasta las 16:00 horas, y luego al volverse a ejecutar a las 17:00 horas, sacará los mismos valores añadiendo los que se han generado desde las 16 hasta las 17. La finalidad de esto es meterlos en una base de datos. Lo que necesito es algún comando (si existe), que me permita mostrar valores a partir de una hora. De ese modo podría decirle (al ejecutarse a las 17:00 horas), que me mostrara los valores desde las 16:00. Hora de la ejecución anterior. Otra cosa que se me había ocurrido es mover el archivo del syslog (mv /var/log/syslog /directorio_destino), y sacar de ese archivo lo que necesito. De este modo tendría los datos desde la última ejecución. Pero al parecer el sistema no vuelve a generar un archivo donde introducir sus logs y aunque lo cree manualmente y le asigne el propietario y los permisos adecuados, no se llena de logs. Curiosamente estos siguen siendo introducidos en el archivo syslog que he movido. ¿? No lo entiendo. Si a alguien se le ocurre un modo de poder hacer esto, o sabe del comando que pregunto, agradecería su ayuda. -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpX1UzQIgTD2.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
El sáb, 12-11-2005 a las 22:28 +0100, Pablo Braulio escribió: > Hola a todos. > > Estoy tratando se sacar los registros de syslog a partir de una fecha. > ("cat /var/log/syslog ") > > ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de grep, > y > no encuentro nada que lo pueda hacer. > con perl lo haces en cuatro lineas > Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero > al > parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo > datos en dicho fichero. Tenes que reiniciar el demonio -- Angel Claudio Alvarez Usuario Linux Registrado 143466 GPG Public Key en http://pgp.mit.edu key fingerprint = 3AED D95B 7E2D E954 61C8 F505 1884 473C FC8C 8AC4 signature.asc Description: This is a digitally signed message part
Re: Sacar registros a partir de una fecha.
On 11/12/05, Pablo Braulio <[EMAIL PROTECTED]> wrote: > El Sábado, 12 de Noviembre de 2005 23:08, [EMAIL PROTECTED] escribió: > > con un solo comando no creo que puedas hacerlo, vas a tener que hacerte un > > script, quizás combinando grep con awk y printf (lo usual para estas > > cosas)..no sé, pero lo que me crea dudas es que quieres decir con que al > > mover syslog el sistema sigue escribiendo en ese fichero, y que no lo > > vuelve a crear? creo que no he entendido muy bien lo que has querido > > decir. > > > > responder una pregunta con otra pregunta es una putada , lo sé. :) > > > > Lo que quiero es hacer un script para esto. Ya tengo uno iniciado que me saca > los valores que quiero del syslog. > > El problema es que me saca todos los campos que yo quiero del syslog, sin > poder filtrar por horas. > > Es decir. > Si ejecuto el script (en el cron) cada hora me repite demasiados datos. Si se > ejecuta a las 16:00 horas (p.e.), me sacará todos los valores desde las 6:33 > horas hasta las 16:00 horas, y luego al volverse a ejecutar a las 17:00 > horas, sacará los mismos valores añadiendo los que se han generado desde las > 16 hasta las 17. > > La finalidad de esto es meterlos en una base de datos. > > Lo que necesito es algún comando (si existe), que me permita mostrar valores a > partir de una hora. De ese modo podría decirle (al ejecutarse a las 17:00 > horas), que me mostrara los valores desde las 16:00. Hora de la ejecución > anterior. > > > Otra cosa que se me había ocurrido es mover el archivo del syslog > (mv /var/log/syslog /directorio_destino), y sacar de ese archivo lo que > necesito. De este modo tendría los datos desde la última ejecución. Pero al > parecer el sistema no vuelve a generar un archivo donde introducir sus logs y > aunque lo cree manualmente y le asigne el propietario y los permisos > adecuados, no se llena de logs. Lo que podrias hacer es pasar /var/log/syslog >> /var/log/syslog_bkp y borrarlo cosa que solo se guardan ahi los logs desde el momento que ejecutaste el script. Saludos -- Linux Registered User # 386081 A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos de leer manuales. カルロス
Re: Sacar registros a partir de una fecha.
El Domingo, 13 de Noviembre de 2005 02:57, Carlos Zuniga escribió: > Lo que podrias hacer es pasar /var/log/syslog >> /var/log/syslog_bkp y > borrarlo cosa que solo se guardan ahi los logs desde el momento que > ejecutaste el script. ¿Te refieres a hacer cat /var/log/syslog>>/var/log/syslog_bkp? -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpQNMDZW5PaM.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
Y si cuentas las líneas con que queda tu syslog y lo guardas en algún lado? Luego en la siguiente corrida haces un tail -LineasGuardadas_menos_LineasActuales y te debería dar las líneas nuevas. No se cuan dificil pueda ser hacer ese script (nunca lo hice). Ricardo El Sábado 12 Noviembre 2005 18:28, Pablo Braulio escribió: > Hola a todos. > > Estoy tratando se sacar los registros de syslog a partir de una fecha. > ("cat /var/log/syslog ") > > ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de > grep, y no encuentro nada que lo pueda hacer. > > Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero > al parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo > datos en dicho fichero.
Re: Sacar registros a partir de una fecha.
El Domingo, 13 de Noviembre de 2005 23:17, Ricardo Araoz escribió: > Y si cuentas las líneas con que queda tu syslog y lo guardas en algún lado? > Luego en la siguiente corrida haces un tail > -LineasGuardadas_menos_LineasActuales y te debería dar las líneas nuevas. > No se cuan dificil pueda ser hacer ese script (nunca lo hice). > Pues después de pensarlo un rato, veo que sería fácil restar las lineas sacadas en la ejecución anterior, a las lineas sacadas en la ejecución actual. ¿Pero como puedo restarlas?. El modo de averiguar las lineas es bastante sencillo hacerlo mediante un script: Sacamos el log: cat archivo_log>>temp_log Se recoge el número de lineas que tiene el archivo del log: wc -l temp_log | cut -d " " -f1>archivo_lineas (este archivo se mantiene para la comparación posterior). Ahora sólo nos queda sacar los valores del número de líneas y restarlos. Conocía el funcionamiento de bc, como calculadora, pero requiere entrar en su entorno. No puedo hacer bc 200-100, para que me muestre la diferencia. Desconozco si existe algún otro modo de poder restar cantidades en consola directamente. -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpoGQyTwzDIJ.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
Usas por ejemplo $((200 - 100)), Un ejemplo, para listar las ultimas 20 líneas de un log puedo hacer : # tail -20 /var/log/messages o tambien (lo he probado) ; # tail -$((125 - 105)) /var/log/messages Aplicá lo mismo a tu problema. Ricardo P.S. ; si funciona te agradecería mandes un mail diciendo cuál era tu problema exactamente y cómo fue la solución exacta. Ya que me podría servir y quiero archivarlo Gracias El Domingo 13 Noviembre 2005 20:56, Pablo Braulio escribió: > El Domingo, 13 de Noviembre de 2005 23:17, Ricardo Araoz escribió: > > Y si cuentas las líneas con que queda tu syslog y lo guardas en algún > > lado? Luego en la siguiente corrida haces un tail > > -LineasGuardadas_menos_LineasActuales y te debería dar las líneas nuevas. > > No se cuan dificil pueda ser hacer ese script (nunca lo hice). > > Pues después de pensarlo un rato, veo que sería fácil restar las lineas > sacadas en la ejecución anterior, a las lineas sacadas en la ejecución > actual. > > ¿Pero como puedo restarlas?. > > El modo de averiguar las lineas es bastante sencillo hacerlo mediante un > script: > > Sacamos el log: > > cat archivo_log>>temp_log > > Se recoge el número de lineas que tiene el archivo del log: > > wc -l temp_log | cut -d " " -f1>archivo_lineas > (este archivo se mantiene para la comparación posterior). > > Ahora sólo nos queda sacar los valores del número de líneas y restarlos. > > Conocía el funcionamiento de bc, como calculadora, pero requiere entrar en > su entorno. No puedo hacer bc 200-100, para que me muestre la diferencia. > > Desconozco si existe algún otro modo de poder restar cantidades en consola > directamente.
Re: Sacar registros a partir de una fecha.
El Domingo 13 Noviembre 2005 21:37, Ricardo Araoz escribió: > Usas por ejemplo $((200 - 100)), > Un ejemplo, para listar las ultimas 20 líneas de un log puedo hacer : > # tail -20 /var/log/messages > o tambien (lo he probado) ; > # tail -$((125 - 105)) /var/log/messages > > Aplicá lo mismo a tu problema. > > Ricardo > > P.S. ; si funciona te agradecería mandes un mail diciendo cuál era tu > problema exactamente y cómo fue la solución exacta. Ya que me podría servir > y quiero archivarlo Gracias > > El Domingo 13 Noviembre 2005 20:56, Pablo Braulio escribió: > > El Domingo, 13 de Noviembre de 2005 23:17, Ricardo Araoz escribió: > > > Y si cuentas las líneas con que queda tu syslog y lo guardas en algún > > > lado? Luego en la siguiente corrida haces un tail > > > -LineasGuardadas_menos_LineasActuales y te debería dar las líneas > > > nuevas. No se cuan dificil pueda ser hacer ese script (nunca lo hice). > > > > Pues después de pensarlo un rato, veo que sería fácil restar las lineas > > sacadas en la ejecución anterior, a las lineas sacadas en la ejecución > > actual. > > > > ¿Pero como puedo restarlas?. > > > > El modo de averiguar las lineas es bastante sencillo hacerlo mediante un > > script: > > > > Sacamos el log: > > > > cat archivo_log>>temp_log Me quedó una duda... Por qué razón guardás un temp_log. No sería más directo hacer wc -l archivo_log | cut -d " " -f1 >archivo_lineas y ahorrarte el cat ? O me estoy perdiendo de algo? Ricardo > > > > Se recoge el número de lineas que tiene el archivo del log: > > > > wc -l temp_log | cut -d " " -f1>archivo_lineas > > (este archivo se mantiene para la comparación posterior). > > > > Ahora sólo nos queda sacar los valores del número de líneas y restarlos. > > > > Conocía el funcionamiento de bc, como calculadora, pero requiere entrar > > en su entorno. No puedo hacer bc 200-100, para que me muestre la > > diferencia. > > > > Desconozco si existe algún otro modo de poder restar cantidades en > > consola directamente.
Re: Sacar registros a partir de una fecha.
Si todo lo anterior no te funciona.. Estuve mirando mi /var/log/syslog (creo que ese era el log que querías ver) y noté que cada tanto hay una línea que luego de la fecha y hora pone : localhost -- MARK -- Se me ocurrió que si te las ingeniás para poner algún tipo de marca en el log tal vez luego te puedas listar el archivo a partir de la última de dichas marcas (aunque ahora que pienso cómo hacerlo se me hace difícil) pero bueno, si te desesperás acá hay otra cosa para probar. Ricardo El Domingo 13 Noviembre 2005 20:56, Pablo Braulio escribió: > El Domingo, 13 de Noviembre de 2005 23:17, Ricardo Araoz escribió: > > Y si cuentas las líneas con que queda tu syslog y lo guardas en algún > > lado? Luego en la siguiente corrida haces un tail > > -LineasGuardadas_menos_LineasActuales y te debería dar las líneas nuevas. > > No se cuan dificil pueda ser hacer ese script (nunca lo hice). > > Pues después de pensarlo un rato, veo que sería fácil restar las lineas > sacadas en la ejecución anterior, a las lineas sacadas en la ejecución > actual. > > ¿Pero como puedo restarlas?. > > El modo de averiguar las lineas es bastante sencillo hacerlo mediante un > script: > > Sacamos el log: > > cat archivo_log>>temp_log > > Se recoge el número de lineas que tiene el archivo del log: > > wc -l temp_log | cut -d " " -f1>archivo_lineas > (este archivo se mantiene para la comparación posterior). > > Ahora sólo nos queda sacar los valores del número de líneas y restarlos. > > Conocía el funcionamiento de bc, como calculadora, pero requiere entrar en > su entorno. No puedo hacer bc 200-100, para que me muestre la diferencia. > > Desconozco si existe algún otro modo de poder restar cantidades en consola > directamente.
Re: Sacar registros a partir de una fecha.
El Lunes, 14 de Noviembre de 2005 01:49, Ricardo Araoz escribió: > Me quedó una duda... Por qué razón guardás un temp_log. No sería más > directo hacer > wc -l archivo_log | cut -d " " -f1 >archivo_lineas > y ahorrarte el cat ? O me estoy perdiendo de algo? La intención es sacar únicamente los logs generados entre dos fechas. Es decir, si se ejecuta cada hora, pues únicamente quiero ver los logs de ese intervalo. Como no consigo hacer comparación de fechas, lo que estoy probando es saber la cantidad de líneas que tiene el syslog a una hora. Guardo esa cantidad en un archivo y luego, en la siguiente ejecución (una hora mas tarde), lo uso para restarlo al número de líneas totales. De este modo obtengo sólo las últimas líneas generadas del syslog, que son las que necesito. Si ejecuto el wc directamente desde el syslog, y obtenido el número final de líneas a mostrar con tail, pierdo tiempo comparando las líneas antes de sacar los logs necesarios. Bueno tampoco se tardaría mucho, pero es que me interesan los logs de iptables y se generan muchas. -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpd6f4kXWtYp.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
El Lunes, 14 de Noviembre de 2005 01:37, Ricardo Araoz escribió: > Usas por ejemplo $((200 - 100)), > Un ejemplo, para listar las ultimas 20 líneas de un log puedo hacer : > # tail -20 /var/log/messages > o tambien (lo he probado) ; > # tail -$((125 - 105)) /var/log/messages > > Aplicá lo mismo a tu problema. > > Ricardo > > P.S. ; si funciona te agradecería mandes un mail diciendo cuál era tu > problema exactamente y cómo fue la solución exacta. Ya que me podría servir > y quiero archivarlo Gracias Si que funciona, pero me queda una cuestión a resolver todavía. Cuando lo tenga del todo funcionando, prometo pegarlo para que lo puedas usar.(faltaría más). :-) Hasta ahora lo tengo hecho para que se ejecute a cada hora (eso lo pongo en el cron). En una primera ejecución sacará todas las líneas del syslog. Contará las líneas totales del archivo y guardará este valor en un archivo. En las sucesivas ejecuciones, hará la misma operación, pero le restará al valor de líneas totales del syslog, el número de líneas que tenía el archivo en la ejecución anterior. De ese modo y con ese valor hará el tail. Y así sucesivamente. Con esto lo tenemos casi solucionado. Pero, a las 6:33 horas, los logs del syslog, son archivados y empiezan a generarse de nuevo. Para corregir esto, comparo la cantidad de líneas de la ejecución anterior, con la cantidad de líneas actual. Si es menor, se ejecuta de modo normal (restando la cantidad anterior a la nueva), si es superior, cogerá el valor 0 (pues en ese caso quiero decir que se han archivado los logs). La comparación la hago así, pero todavía no me funciona bien. # Comprobamos la existencia de archivo de líneas y comparamos los archivos. lineas1=`cat $lineas`; lineas2=`cat $lineas_temp`; if [ ! -e $lineas ]; then lineas_total=0; elif [ $lineas1 =< $lineas2 ]; then lineas_total=`cat $lineas`; else lineas_total=0; fi -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpn8DXXaYfD8.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Pablo Braulio wrote: [...] > > Si a alguien se le ocurre un modo de poder hacer esto, o sabe del comando que > pregunto, agradecería su ayuda. DISCLAIMER: Sin haber leido ni uno solo de los correos del hilo (salvo este) y a riesgo de estar contestando algo totalmente inutil e improductivo... ... buscaste si no existe algo /ya hecho/ de lo que buscas? Puedes llegar a sorprenderte!!! BONUS TRACK DEL SOFTWARE LIBRE: Lees el codigo y aprendes como lo hicieronluego nos cuentas ;) - -- Ricardo A.Frydman Consultor en Tecnología Open Source - Administrador de Sistemas jabber: [EMAIL PROTECTED] - http://www.eureka-linux.com.ar SIP # 1-747-667-9534 -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFDeIQukw12RhFuGy4RAhQTAJ0YqsySBLY1CUAtn2/FPpCTTvqXyQCeIjvN vU+AlPNRY35fdLac/OgQyX8= =WCp1 -END PGP SIGNATURE-
Re: Sacar registros a partir de una fecha.
--- Carlos Zuniga <[EMAIL PROTECTED]> escribió: > On 11/12/05, Pablo Braulio <[EMAIL PROTECTED]> > wrote: > > El Sábado, 12 de Noviembre de 2005 23:08, > [EMAIL PROTECTED] escribió: > > > con un solo comando no creo que puedas hacerlo, > vas a tener que hacerte un > > > script, quizás combinando grep con awk y printf > (lo usual para estas > > > cosas)..no sé, pero lo que me crea dudas es que > quieres decir con que al > > > mover syslog el sistema sigue escribiendo en ese > fichero, y que no lo > > > vuelve a crear? creo que no he entendido muy > bien lo que has querido > > > decir. > > > > > > responder una pregunta con otra pregunta es una > putada , lo sé. :) > > > > > > > Lo que quiero es hacer un script para esto. Ya > tengo uno iniciado que me saca > > los valores que quiero del syslog. > > > > El problema es que me saca todos los campos que yo > quiero del syslog, sin > > poder filtrar por horas. > > > > Es decir. > > Si ejecuto el script (en el cron) cada hora me > repite demasiados datos. Si se > > ejecuta a las 16:00 horas (p.e.), me sacará todos > los valores desde las 6:33 > > horas hasta las 16:00 horas, y luego al volverse a > ejecutar a las 17:00 > > horas, sacará los mismos valores añadiendo los > que se han generado desde las > > 16 hasta las 17. > > > > La finalidad de esto es meterlos en una base de > datos. > > > > Lo que necesito es algún comando (si existe), que > me permita mostrar valores a > > partir de una hora. De ese modo podrÃa decirle > (al ejecutarse a las 17:00 > > horas), que me mostrara los valores desde las > 16:00. Hora de la ejecución > > anterior. > > > > > > Otra cosa que se me habÃa ocurrido es mover el > archivo del syslog > > (mv /var/log/syslog /directorio_destino), y sacar > de ese archivo lo que > > necesito. De este modo tendrÃa los datos desde la > última ejecución. Pero al > > parecer el sistema no vuelve a generar un archivo > donde introducir sus logs y > > aunque lo cree manualmente y le asigne el > propietario y los permisos > > adecuados, no se llena de logs. > > Lo que podrias hacer es pasar /var/log/syslog >> > /var/log/syslog_bkp y > borrarlo cosa que solo se guardan ahi los logs desde > el momento que > ejecutaste el script. a mi lo que se me ocurre es: cp /var/log/syslog /var/log/syslog_bkp && echo "" >/var/log/syslog __ Renovamos el Correo Yahoo! Nuevos servicios, más seguridad http://correo.yahoo.es -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
--- Ricardo Araoz <[EMAIL PROTECTED]> escribió: > Y si cuentas las líneas con que queda tu syslog y lo > guardas en algún lado? > Luego en la siguiente corrida haces un tail > -LineasGuardadas_menos_LineasActuales y te debería > dar las líneas nuevas. > No se cuan dificil pueda ser hacer ese script (nunca > lo hice). > > Ricardo Yo creo que se podría hacer sin mucho problema en perl, siempre y cuando se tuviese en cuenta a logrotate claro. __ Renovamos el Correo Yahoo! Nuevos servicios, más seguridad http://correo.yahoo.es -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
--- Pablo Braulio <[EMAIL PROTECTED]> escribió: > El Lunes, 14 de Noviembre de 2005 01:37, Ricardo > Araoz escribió: > > Usas por ejemplo $((200 - 100)), > > Un ejemplo, para listar las ultimas 20 líneas de > un log puedo hacer : > > # tail -20 /var/log/messages > > o tambien (lo he probado) ; > > # tail -$((125 - 105)) /var/log/messages > > > > Aplicá lo mismo a tu problema. > > > > Ricardo > > > > P.S. ; si funciona te agradecería mandes un mail > diciendo cuál era tu > > problema exactamente y cómo fue la solución > exacta. Ya que me podría servir > > y quiero archivarlo Gracias > > Si que funciona, pero me queda una cuestión a > resolver todavía. Cuando lo > tenga del todo funcionando, prometo pegarlo para que > lo puedas usar.(faltaría > más). :-) > > Hasta ahora lo tengo hecho para que se ejecute a > cada hora (eso lo pongo en el > cron). En una primera ejecución sacará todas las > líneas del syslog. Contará > las líneas totales del archivo y guardará este valor > en un archivo. > > En las sucesivas ejecuciones, hará la misma > operación, pero le restará al > valor de líneas totales del syslog, el número de > líneas que tenía el archivo > en la ejecución anterior. De ese modo y con ese > valor hará el tail. Y así > sucesivamente. > > Con esto lo tenemos casi solucionado. Pero, a las > 6:33 horas, los logs del > syslog, son archivados y empiezan a generarse de > nuevo. > > Para corregir esto, comparo la cantidad de líneas de > la ejecución anterior, > con la cantidad de líneas actual. Si es menor, se > ejecuta de modo normal > (restando la cantidad anterior a la nueva), si es > superior, cogerá el valor 0 > (pues en ese caso quiero decir que se han archivado > los logs). > > La comparación la hago así, pero todavía no me > funciona bien. > > # Comprobamos la existencia de archivo de líneas y > comparamos los archivos. > lineas1=`cat $lineas`; > lineas2=`cat $lineas_temp`; > > if [ ! -e $lineas ]; > then > lineas_total=0; > elif [ $lineas1 =< $lineas2 ]; > then > lineas_total=`cat $lineas`; > else > lineas_total=0; > fi > Tambien puedes usar algo ya creado, aunque no se que tal va : http://iptablelog.sourceforge.net/ otra solución a tu problema si quieres hacerlo tu, es olvidarse de sacar los registros por hora y usar un tail -f /var/log/syslog. Con esto te salen automaticamente las líneas que se van añadiendo al syslog. __ Renovamos el Correo Yahoo! Nuevos servicios, más seguridad http://correo.yahoo.es -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
El Lunes, 14 de Noviembre de 2005 13:33, Ricardo Frydman Eureka! escribió: > DISCLAIMER: Sin haber leido ni uno solo de los correos del hilo (salvo > este) y a riesgo de estar contestando algo totalmente inutil e > improductivo... > ... buscaste si no existe algo /ya hecho/ de lo que buscas? Puedes > llegar a sorprenderte!!! > > BONUS TRACK DEL SOFTWARE LIBRE: Lees el codigo y aprendes como lo > hicieronluego nos cuentas ;) A ver Ricardo. Sin ánimos de reproche ni nada que suene violento. Si me estoy "complicando la vida", es por dos motivos: 1- Porque lo que he visto hasta ahora para tratar los logs, no me sirven totalmente. Siempre hay algo que no hacen. Aunque es verdad que podría usar algunas de estas herramientas ya hechas. 2- Porque "quiero o me da la gana", calentarme el coco para aprender un poco mas. Con lo que llevo hecho hasta ahora he aprendido algunos comandos de cuya sintaxis o existencia desconocía, y posiblemente tenga que empaparme perl para depurar mejor lo que quiero hacer. Esto es más incómodo, complicado y da más dolores de cabeza, que buscar una aplicación ya hecha y aprender a usarla. Opto por lo complicado y difícil para practicar un poco. P.d.: espero que no haya sonado mal, pues no me molesta tu comentario. -- Saludos. Pablo. Fingerprint 5607 40CF 45EF D490 B794 5056 D7B2 C3DC ABF1 CE49 Jabber: bruli(at)myjabber(dot)net pgpy18MV6qvwU.pgp Description: PGP signature
Re: Sacar registros a partir de una fecha.
El lun, 14-11-2005 a las 08:13 +0100, Pablo Braulio escribió: > El Lunes, 14 de Noviembre de 2005 01:49, Ricardo Araoz escribió: > > Me quedó una duda... Por qué razón guardás un temp_log. No sería más > > directo hacer > > wc -l archivo_log | cut -d " " -f1 >archivo_lineas > > y ahorrarte el cat ? O me estoy perdiendo de algo? > > La intención es sacar únicamente los logs generados entre dos fechas. Es > decir, si se ejecuta cada hora, pues únicamente quiero ver los logs de ese > intervalo. > > Como no consigo hacer comparación de fechas, lo que estoy probando es saber > la > cantidad de líneas que tiene el syslog a una hora. Guardo esa cantidad en un > archivo y luego, en la siguiente ejecución (una hora mas tarde), lo uso para > restarlo al número de líneas totales. De este modo obtengo sólo las últimas > líneas generadas del syslog, que son las que necesito. > > Si ejecuto el wc directamente desde el syslog, y obtenido el número final de > líneas a mostrar con tail, pierdo tiempo comparando las líneas antes de sacar > los logs necesarios. Bueno tampoco se tardaría mucho, pero es que me > interesan los logs de iptables y se generan muchas. > Te paso algo muy basico en perl para que veas que tu problema se soluciona con perl - #!/usr/bin/perl my $fecha = @ARGV[0]; while () { print if /^$fecha/; } --- usalo de la siguiente manera: cat archivo | nombre_script "Nov 14" El script tiene que tener permiso de ejecucion y el aprametro que le pasas tiene que ser el comienzo de la linea con la fecha que estas buscando > -- Angel Claudio Alvarez Usuario Linux Registrado 143466 GPG Public Key en http://pgp.mit.edu key fingerprint = 3AED D95B 7E2D E954 61C8 F505 1884 473C FC8C 8AC4 signature.asc Description: This is a digitally signed message part
Re: Sacar registros a partir de una fecha.
Estoy trabajando en una rutina para filtrar dado un rango numérico, pero charlando con un amigo me oriento a que esto se puede facilitar configurando el demonio que genera el archivo syslog, además que existen varios demonios alternativos. Pablo Braulio wrote: Hola a todos. Estoy tratando se sacar los registros de syslog a partir de una fecha. ("cat /var/log/syslog ") ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de grep, y no encuentro nada que lo pueda hacer. Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero al parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo datos en dicho fichero. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
Esta es la rutina es basado en Perl *#!/usr/bin/perl* open(texto, *"*/var/log/syslog*"*); /# Abre diego.txt/ *while* () { @x = split (*"* *"*,$_); *if*(@x[0] *eq* *"[EMAIL PROTECTED]"*) /# Compara con el Mes/ { *if* ( @x[1] == @ARGV[1] ) /# Compara con el dia/ { @y = split ( *"*:*"*,@x[2] ); *if* ( @y[0] >= @ARGV[2] *and* @y[0] <= @ARGV[3] ) /# Compara con intervalo de horas./ { print $_;}/#imprime $_/ } } } close (texto); tendras que crear un archivo el cual le pasas como parametro: el Mes, el Dia, Hora de Inicio y Hora de Fin. oscar wrote: Estoy trabajando en una rutina para filtrar dado un rango numérico, pero charlando con un amigo me oriento a que esto se puede facilitar configurando el demonio que genera el archivo syslog, además que existen varios demonios alternativos. Pablo Braulio wrote: Hola a todos. Estoy tratando se sacar los registros de syslog a partir de una fecha. ("cat /var/log/syslog ") ¿Alguien sabe si hay algún comando que lo haga?. He revisado el man de grep, y no encuentro nada que lo pueda hacer. Otra cosa que se me había ocurrido hacer es mover el archivo "syslog", pero al parecer el sistema no lo vuelve a crear nuevamente y sigue introduciendo datos en dicho fichero. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
Re: Sacar registros a partir de una fecha.
Hola Pablo, Estaba mirando /etc/logrotate.conf y me acordé de este hilo. Te quería comentar que si hubieras querido sacar los logs "entre dos fechas", tomando fechas como días y no como horas hubiera sido más directo configurar este archivo para que rotara este log "daily" (por supuesto, que guardando la cantidad de logs antiguos que creyeras necesario con rotate nn). Para algún interesado : man logrotate Ricardo El Lunes 14 Noviembre 2005 04:13, Pablo Braulio escribió: > El Lunes, 14 de Noviembre de 2005 01:49, Ricardo Araoz escribió: > > Me quedó una duda... Por qué razón guardás un temp_log. No sería más > > directo hacer > > wc -l archivo_log | cut -d " " -f1 >archivo_lineas > > y ahorrarte el cat ? O me estoy perdiendo de algo? > > La intención es sacar únicamente los logs generados entre dos fechas. Es > decir, si se ejecuta cada hora, pues únicamente quiero ver los logs de ese > intervalo. > > Como no consigo hacer comparación de fechas, lo que estoy probando es saber > la cantidad de líneas que tiene el syslog a una hora. Guardo esa cantidad > en un archivo y luego, en la siguiente ejecución (una hora mas tarde), lo > uso para restarlo al número de líneas totales. De este modo obtengo sólo > las últimas líneas generadas del syslog, que son las que necesito. > > Si ejecuto el wc directamente desde el syslog, y obtenido el número final > de líneas a mostrar con tail, pierdo tiempo comparando las líneas antes de > sacar los logs necesarios. Bueno tampoco se tardaría mucho, pero es que me > interesan los logs de iptables y se generan muchas.
Re: Sacar registros a partir de una fecha.
On Thursday 24 November 2005 12:57, Ricardo Araoz wrote: > Hola Pablo, > Estaba mirando /etc/logrotate.conf y me acordé de este hilo. > Te quería comentar que si hubieras querido sacar los logs "entre dos > fechas", tomando fechas como días y no como horas hubiera sido más directo > configurar este archivo para que rotara este log "daily" (por supuesto, que > guardando la cantidad de logs antiguos que creyeras necesario con rotate > nn). Para algún interesado : man logrotate Gracias, lo miraré. -- Saludos. Pablo Jabber: bruli(at)myjabber(to)net