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/