Re: Sacar registros a partir de una fecha.

2005-11-24 Por tema Ricardo Araoz
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.

2005-11-24 Por tema Pablo Braulio
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



Re: Sacar registros a partir de una fecha.

2005-11-15 Por tema oscar
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.

2005-11-15 Por tema oscar

Esta es la rutina es basado en Perl

*#!/usr/bin/perl*
open(texto, **/var/log/syslog**);  /# Abre diego.txt/
*while* (texto)
{
   @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.

2005-11-14 Por tema Ricardo Frydman Eureka!
-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.

2005-11-14 Por tema Alfonso Pinto

 --- 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.

2005-11-14 Por tema Alfonso Pinto

 --- 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.

2005-11-14 Por tema Alfonso Pinto

 --- 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.

2005-11-14 Por tema Pablo Braulio
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.

2005-11-14 Por tema Angel Claudio Alvarez
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 (STDIN)
{
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.

2005-11-13 Por tema Pablo Braulio
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.

2005-11-13 Por tema Ricardo Araoz
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.

2005-11-13 Por tema Pablo Braulio
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_logtemp_log

Se recoge el número de lineas que tiene el archivo del log:

wc -l temp_log | cut -d   -f1archivo_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.

2005-11-13 Por tema Ricardo Araoz
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_logtemp_log

 Se recoge el número de lineas que tiene el archivo del log:

 wc -l temp_log | cut -d   -f1archivo_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.

2005-11-13 Por tema Ricardo Araoz
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_logtemp_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   -f1archivo_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.

2005-11-13 Por tema Ricardo Araoz
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_logtemp_log

 Se recoge el número de lineas que tiene el archivo del log:

 wc -l temp_log | cut -d   -f1archivo_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.

2005-11-13 Por tema Pablo Braulio
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.

2005-11-13 Por tema Pablo Braulio
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.

2005-11-12 Por tema [EMAIL PROTECTED]


 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.

2005-11-12 Por tema Pablo Braulio
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.

2005-11-12 Por tema Angel Claudio Alvarez
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.

2005-11-12 Por tema Carlos Zuniga
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.
カルロス