¿Como puedo extraer información de un log demasiado grande para excel sin ninguna herramienta?
En muchas ocasiones, la respuesta sería, utiliza logparser! o… cargalo en una base de datos y luego ejecutas una query y sacas lo que necesites!!
¿y si no puedo?
Un administrador en una emergencia hay muchas veces que no tiene nada a mano en el host donde es necesario, y cualquier movimiento de un log de bastantes MB puede resultar bastante incomodo, sobre todo si hay lentitud en la red, reglas en los firewalls etc.
‘ExtractLines.vbs By Roberto Clemente Bustamante. Digilux Admins Team
dim objfile
dim objsource
dim objdestination
dim strline
CONST RDER =”ex040221.log” ‘NOMBRE FICHERO PARA LEER
CONST WTER =”resultados.txt” ‘NOMBRE FICHERO PARA ESCRIBIR
CONST SCODE =”SMTP” ‘CADENA DE TEXTO A EXTRAER
‘Option Compare Text
set objfile = createobject(“scripting.filesystemobject”)
set objsource = objfile.opentextfile(RDER,1)
set objdestination = objfile.opentextfile(WTER,2)
do until objsource.atendofstream
strline = trim (objsource.readline())
if (instr (1, strline , SCODE)) then
objdestination.writeline (strline)
end if
loop
set objsource = nothing
set objdestination = nothing
set objfile = nothing
Este es uno de mis scripts mas sencillos y útiles. Voy a explicaros los diferentes usos que yo personalmente le doy.
1.- Ejemplo de “Lector y escritor” :
Cuando estudias programación, el algoritmo del lector y el escritor te lo explican de forma teórica y se vé en algún ejemplo. Básicamente el script hace esto, lee de un origen, y escribe en un destino. Para reutilizar código, lo he utilizado cientos de veces. Un programador, además de programar, debe saber reciclar código, y este script lo he abierto centenares de veces como el típico ejemplo de lector y escritor
2.- Parser, extractor, reductor… :
Otro uso es, que como arriba están declaradas las constantes (fichero de entrada, fichero de salida y SCODE (Search code o código de busqueda) en menos de 2 minutos podemos preparar un script que hará el trabajo tedioso por nosotros. Por ejemplo, supongamos que hay un fichero con mas de 66000 lineas (mas que suficiente para “reventar” lo que te acepta el Excel y por lo tanto no poder utilizarlo) Pues bien, abrir el notepad con este archivo, según en qué servidor es tarea de alto riesgo, quiero decir, si estamos muy justitos, no podemos cargarlo en memoria si no queremos comprometer según qué máquina…
Pues bíen, ponemos el script, parametrizamos lo que queramos extraer, por ejemplo “error” o “warning” o la ip de ese host que sospechamos que puede no tener demasiadas buenas intenciones en el SCODE. El fichero de entrada de log y el nombre del fichero de salida. Comprobamos que al menos tengamos tanto espacio libre como ocupa el fichero original, ejecutamos, esperamos unos minutos y et voila! tenemos el fichero de resultados.
3.- Adaptalo a tus necesidades: Las posibilidades de adaptación de este script son fantásticas, por ejemplo, cambiando la condicional del strline y el orden de los bucles podemos reutilizarlo para extraer los comentarios de un fichero de configuración tipo main.cf (como los de postfix) que están repletos de comentarios y mas comentarios y no se sabe donde está la config y donde el comentario …
4.- ¿Que mas quieres? : En realidad, el script es bastante de perogrullo, y simplemente hay que tener algo de originalidad en su uso, pero os garantizo de que mi biblioteca particular es uno de esos pilares que siempre sabes que tienes a mano para casi cualquier cosa!!
Nota:
Por cierto, hice un copiar y pegar directamente desde esta página porque no tenia mi biblioteca a mano, y si os falla, es por las comillas, simples y dobles, que cuando las pega en el notepad las cambia por otras…. Recordad modificarlo, todo en el script que aparece con dobles comillas son dobles comillas (de las de mayusculas + 2) y todas las comillas simples, son comillas simples (de las de la derecha del 0)