22 de Abril, 2009

Poner color a tail

Hoy he estado añadiendo medidas antispam, concretamente sqlgrey (Zimbra trabaja con Postfix, y no había una solución basada en Milter que me gustara).

Estaba viendo pasar trazas en los logs, y resulta que tengo los ojos muy desentrenados :(.

Para facilitarme las cosas he querido ver resaltadas unas trazas especiales, pero necesitaba que fuera dentro del contexto general, por lo que la opción --color de egrep, que es lo primero que he probado, no me valía.

Al final he usado sed(1) y algunas secuencias de escape ANSI, que funcionarán en cualquier terminal remota con SSH.

tailfc()
{
        if [ $# -ne 2 ]; then
                echo "usage: tailfc file expr"
        else
                # recordemos que el ^[ en amarillo se consigue con 
                # CTRL + v seguido de CTRL + [
                tail -f $1 | sed "s/\($2\)/^[[1;31m\1^[[0m/g"
        fi
}

Lo he añadido en ~/.bashrc y así se invoca como un comando interno del shell, indicando el log a seguir y la expresión que queremos ver remarcada.

Así, se ejecutamos el siguiente comando:

# tailfc /var/log/maillog "sqlgrey: .*"

Seguiremos el log del sistema de correo, marcando en rojo las trazas que genera sqlgrey:

Salida de tailfc
Se resaltan las tramas interesantes, que es lo que buscamos

El segundo parámetro puede ser cualquier expresión regular que entienda sed, así que partimos del tag que marca la trama interesante hasta el final de linea, y añadimos los códigos de color que deseemos (que podemos sacar del BASH Prompt How To).

Es bastante sencillo, pero me ha sido muy útil para seguir las trazas en tiempo real, dentro del contexto del tráfico de correo ;).

Cuando tenta una valoración del comportamiento de sqlgrey, ya lo comentaré por aquí.

Anotación por Juan J. Martínez, clasificada en: hack, unix.

Hay 3 comentarios

Gravatar

en gentoo te colorea casi todas esas aplicaciones con un paquete que no recuerdo ni como se llama...

muy útil el .bashrc, hoy he tenido que incluir :
if [ $DISPLAY != ":0.0" ]; then setxkbmap -model evdev -layout gb;
fi

porque en las sesiones de freenx con la ultima actualización no funcionaba bien el teclado, no reconocía todas las teclas(cosas de evdev imagino), de paso le pongo el teclado en britsh que es el que uso como cliente, ya que el server tiene un teclado en español.

yo me vuelvo loco con awk sed y demás con cosas así:

"s/\($2\)/^[[1;31m\1^[[0m/g"

aunque para eso uso "txt2regex" o modifico algún script de que pille por la red.

por elpeor, en 2009-04-23 12:43:27

Gravatar

tú lo has dicho: Sencillo... pero elegante y sobre práctico. Mola que haya gente que comparta estas "cositas". au.

por un visitante, en 2009-04-24 00:09:22

Gravatar

Yo uso grc (ya sabes: apt-get install grc), funciona con todo tipo de logs (access.log, maillog, auth.log, system.log, messages...). Antes había otro comando que se llamaba "colorize" o algo así, pero no he vuelto a saber más de él.

por r0sk, en 2009-04-24 07:30:55

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: