Re: [Python-es] Fwd: Lectura de archivos planos tipo logsurfer

2011-03-27 Por tema Manuel Enrique González Ramírez
El 27 de marzo de 2011 16:01, Alfonso de la Guarda
alfons...@gmail.comescribió:

 Hola,

 contenido es un objeto de tipo file, por ende puedes emplear read(),
 readlines() , etc.



 Saludos,

 
 Alfonso de la Guarda
 Centro Open Source(COS)
 http://www.cos-la.net
 http://alfonsodg.net
Telef. 991935157
 1024D/B23B24A4
 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4



 2011/3/27 Carlos Herrera Polo carlos.herrerap...@gmail.com:
  -- Forwarded message --
  From: Carlos Herrera Polo carlos.herrerap...@gmail.com
  Date: Sun, 27 Mar 2011 22:58:54 +0200
  Subject: Re: Lectura de archivos planos tipo logsurfer
  To: Alfonso de la Guarda alfons...@gmail.com
 
  Buena idea, no se me habia ocurrido usar tail.
  La variable contenido en el ejemplo que representa ? Una lista ? Un
  texto enorme con el resultado de tail ?
 
  El 27/03/11, Alfonso de la Guarda alfons...@gmail.com escribió:
  Hola,
 
  Pues yo emplearía (tal como lo he hecho antes) popen (aunque desde 2.6
  ya es un método obsoleto)
 
  import os
  contenido = os.popen(tail -n 50 /var/log/syslog)
  print contenido.read()
  if contenido.read() .,.
 
  En tail cambia el 50 por la cantidad de líneas que quieras y
  obviamente metelo en un loop (con pausa) o como una tarea programada
  (cron)


Y si al tail le agregas un grep para buscar algo en concreto te quedará más
eficiente

contenido = os.popen(tail -n 50 /var/log/syslog | grep -i 'error_a_buscar'
)


 
 
  Saludos,
 
  
  Alfonso de la Guarda
  Centro Open Source(COS)
  http://www.cos-la.net
  http://alfonsodg.net
 Telef. 991935157
  1024D/B23B24A4
  5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4
 
 
 
  2011/3/27 Carlos Herrera Polo carlos.herrerap...@gmail.com:
  Ilustres, quisiera tener su opinion al respecto..
 
  Administro ciertos servidores linux, y consolido la informacion de los
  logs de estos en un unico servidor con el servicio syslog-ng, los logs
  son archivos planos que se almacenan en formato ASCII, un log por cada
  servicio/servicio.
  Quisiera desarrollar un programa simple que me alerte por correo de
  ciertos eventos que ocurren en los logs Existe un programa llamado
  logsurfer, escrito en C que hace esto...
  Mi idea es hacer un logsurfer pero en python, pero no se como trabajar
  la lectura de estos archivos planos que cada uno debe tener varios
  megas de peso, y son escritos cada segundo, ustedes como lo harian ?
  Porque hacer fileread por cada uno y luego irme hasta las ultimas
  filas como que no seria eficiente...
 
  Alguien que me pueda sugerir algo por favor ?
 
  Muchas gracias a todos
 
  Saludos
 
  --
  Enviado desde mi dispositivo móvil
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
 
 
  --
  Enviado desde mi dispositivo móvil
 
  --
  Enviado desde mi dispositivo móvil
  ___
  Python-es mailing list
  Python-es@python.org
  http://mail.python.org/mailman/listinfo/python-es
  FAQ: http://python-es-faq.wikidot.com/
 
 ___
 Python-es mailing list
 Python-es@python.org
 http://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/




-- 
Manuel Enrique González Ramírez
http://maengora.blogspot.com
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Fwd: Lectura de archivos planos tipo logsurfer

2011-03-27 Por tema Carlos Zuniga
2011/3/27 Manuel Enrique González Ramírez maeng...@gmail.com:
 El 27 de marzo de 2011 16:01, Alfonso de la Guarda alfons...@gmail.com
 escribió:

 Hola,

 contenido es un objeto de tipo file, por ende puedes emplear read(),
 readlines() , etc.



 Saludos,

 
 Alfonso de la Guarda
 Centro Open Source(COS)
 http://www.cos-la.net
 http://alfonsodg.net
    Telef. 991935157
 1024D/B23B24A4
 5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4



 2011/3/27 Carlos Herrera Polo carlos.herrerap...@gmail.com:
  -- Forwarded message --
  From: Carlos Herrera Polo carlos.herrerap...@gmail.com
  Date: Sun, 27 Mar 2011 22:58:54 +0200
  Subject: Re: Lectura de archivos planos tipo logsurfer
  To: Alfonso de la Guarda alfons...@gmail.com
 
  Buena idea, no se me habia ocurrido usar tail.
  La variable contenido en el ejemplo que representa ? Una lista ? Un
  texto enorme con el resultado de tail ?
 
  El 27/03/11, Alfonso de la Guarda alfons...@gmail.com escribió:
  Hola,
 
  Pues yo emplearía (tal como lo he hecho antes) popen (aunque desde 2.6
  ya es un método obsoleto)
 
  import os
  contenido = os.popen(tail -n 50 /var/log/syslog)
  print contenido.read()
  if contenido.read() .,.
 
  En tail cambia el 50 por la cantidad de líneas que quieras y
  obviamente metelo en un loop (con pausa) o como una tarea programada
  (cron)

 Y si al tail le agregas un grep para buscar algo en concreto te quedará más
 eficiente

 contenido = os.popen(tail -n 50 /var/log/syslog | grep -i 'error_a_buscar'
 )


 
 
  Saludos,
 
  
  Alfonso de la Guarda
  Centro Open Source(COS)
  http://www.cos-la.net
  http://alfonsodg.net
     Telef. 991935157
  1024D/B23B24A4
  5469 ED92 75A3 BBDB FD6B  58A5 54A1 851D B23B 24A4
 
 
 
  2011/3/27 Carlos Herrera Polo carlos.herrerap...@gmail.com:
  Ilustres, quisiera tener su opinion al respecto..
 
  Administro ciertos servidores linux, y consolido la informacion de los
  logs de estos en un unico servidor con el servicio syslog-ng, los logs
  son archivos planos que se almacenan en formato ASCII, un log por cada
  servicio/servicio.
  Quisiera desarrollar un programa simple que me alerte por correo de
  ciertos eventos que ocurren en los logs Existe un programa llamado
  logsurfer, escrito en C que hace esto...
  Mi idea es hacer un logsurfer pero en python, pero no se como trabajar
  la lectura de estos archivos planos que cada uno debe tener varios
  megas de peso, y son escritos cada segundo, ustedes como lo harian ?
  Porque hacer fileread por cada uno y luego irme hasta las ultimas
  filas como que no seria eficiente...
 

Si la preocupación es que sea eficiente, no sería mejor usar solamente
python en lugar de abrir más procesos?

Mira este algoritmo que implementa tail en python, es eficiente por
que comienza a buscar desde atrás, así que no lee el archivo completo
si no es necesario:

http://stackoverflow.com/questions/136168/get-last-n-lines-of-a-file-with-python-similar-to-tail/136368#136368

Saludos
-- 
Linux Registered User # 386081
A menudo unas pocas horas de Prueba y error podrán ahorrarte minutos
de leer manuales.
___
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/