Parsear logs
Muchas veces los logs son inmensos y no hay forma de ver nada en ellos, por lo que usando determinadas herramientas podemos localizar lo que buscamos en los mismos
grep
GREP te permite ejecutar patrones de búsqueda en archivos. La sintaxis es muy sencilla
grep '<texto-buscado>' <archivo/archivos>
Ten en cuenta que las comillas simples o dobles son imperativas alrededor del texto si es más de una palabra.
Puedes usar el comodín (*) para seleccionar todos los archivos en un directorio.
Ejemplo:
grep 'etaboada' maillog
Aug 13 07:30:53 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
Aug 13 07:31:14 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
Aug 13 08:54:11 vserver01016 xxxx-sendmail[11611]: S11611: from=<xxxxx> to=<etaboada@ateinco.net>
Aug 13 08:54:32 vserver01016 postfix/smtp[11622]: 505C0F217A9: to=<etaboada@ateinco.net> delay=21, delays=0.05/0.01/0.11/21, dsn=2.0.0, status=sent (250 OK id=1oMl2B-0003V5-2x)
Aug 13 09:00:01 vserver01016 xxxx-sendmail[12317]: S12317: from=<xxxxx@ateinco.net> to=<etaboada@ateinco.net>
Aug 13 09:00:22 vserver01016 postfix/smtp[12328]: 4C3A2F217A9: to=<etaboada@ateinco.net>, delay=21, delays=0.07/0.02/0.17/20, dsn=2.0.0, status=sent (250 OK id=1oMl7q-0003of-22)
Zgrep
Funciona igual que grep, pero con la diferencia que permite buscar en archivos comprimidos
modificadores de grep
-n (--line-number)
enumera los números de línea, es decir imprime las coincidencias de un texto junto con los números de línea
grep 'etaboada' maillog -n
1492:Aug 13 07:30:53 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
1514:Aug 13 07:31:14 vserver01016 XXXXXXX to=<etaboada@ateinco.net>
3646:Aug 13 08:54:11 vserver01016 xxxx-sendmail[11611]: S11611: from=<xxxxx> to=<etaboada@ateinco.net>
3654:Aug 13 08:54:32 vserver01016 postfix/smtp[11622]: 505C0F217A9: to=<etaboada@ateinco.net> delay=21, delays=0.05/0.01/0.11/21, dsn=2.0.0, status=sent (250 OK id=1oMl2B-0003V5-2x)
3804:Aug 13 09:00:01 vserver01016 xxxx-sendmail[12317]: S12317: from=<xxxxx@ateinco.net> to=<etaboada@ateinco.net>
3815:Aug 13 09:00:22 vserver01016 postfix/smtp[12328]: 4C3A2F217A9: to=<etaboada@ateinco.net>, delay=21, delays=0.07/0.02/0.17/20, dsn=2.0.0, status=sent (250 OK id=1oMl7q-0003of-22)
-c (--count)
imprime el número de líneas de coincidencias
root@vserver:/var/log# grep 'etaboada' maillog -c
7
-i (--ignore-case)
Utilizado para la ignorar la distinción entre mayúsculas y minúsculas
l (--files-with-matches)
imprimir nombres de archivos que coincidan con un patrón
-o (--only-matching)
imprimir solo el patrón coincidente
-A (--after-context) y -B (--before-context)
Imprimir las líneas después y antes (respectivamente) del patrón coincidente
-R (--dereference-recursive)
Búsqueda recursiva.
Por defecto, grep no busca en directorios. Si tú intentas hacerlo, obtendrás un error ("Es un directorio"). Con la opción -R, se realiza la búsqueda de archivos entre directorios y subdirectorios
^pattern Inicio de línea
Este patrón significa que grep solo coincide con cadenas cuyas líneas empiecen con la cadena especificada en pattern
pattern$ fin de la línea
Este patrón significa que grep solo coincide con cadenas cuyas líneas finalizan con la cadena especificada en pattern