Planeta BSD

FreeBSD, OpenBSD, NetBSD, …. Berkeley Software Distribution

Entradas por autor

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 estoy muy desentrenado.

Quería ver resaltadas unas trazas especiales dentro del contexto general, así que la opción --color de egrep no me valía.

Al final he usado sed(1) y algunas secuencias de escape ANSI, que nos valdrá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;31m1^[[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 de 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 ;) .

Leer el post completo »

En: Uncategorized — April 22, 2009

Nos pasamos a Dovecot

La verdad es que los días de Navidad soy bastante productivo, entre que no tengo nada que hacer y esperar entre comidas y cenas, y siempre acabo haciendo algo.

Es cierto: bogom nació un 25 de Diciembre -paralelismos bíblicos aparte- fruto de esta creatividad desatada por el aburrimiento, y ayer me propuse quitar mi combinación de popa3d (integrado en OpenBSD) y stunnel.

No es porque tuviera problemas con el POP3s (porque con mi nueva configuración seguimos igual :S), sino porque con el pequeño de viaje resulta incómodo acceder al correo usando POP3.

Sí, que soy un antiguo :P . Mi correo está todo en un mismo sitio: mi máquina habitual (mi portátil que descansa ahora mismo en casa, en Valencia), así que usar POP3 desde distintas ubicaciones es incómodo (al final dejar los mensajes en el servidor es una solución poco óptima si manejas mucho correo porque ves cada mensaje dos veces).

Así los pasos a seguir son los siguientes:

  1. Hacer que sendmail entregue el correo con procmail, porque sendmail solo nos da soporte para mbox.

    Que no es obligatorio si usamos un servidor IMAP/POP se se apañe bien con mbox, pero ya que modernizamos… pues nos pasamos a maildir.

    Con procmail es fácil usar maildir.

  2. Convertir los mbox existentes a maildir. Hay diferentes propuestas.
  3. Instalar un servidor con soporte IMAP/POP, y además con SSL/TLS (así quitamos de enmedio a stunnel).
  4. Profit!

Hacia años (¡muchos!) que no tenía que decidir por un servidor. Mi última elección, por el año 2002, fue Courrier, y ayer me apuntaron a Dovecot, y me he decidido por él.

Compila fácil, sencillo de instalar, muy cómodo de configurar, y si aparece un fallo de seguridad y me toca actualizar, al menos sé que al autor le puede costar caro :P .

Al final no tardé casi nada en tenerlo todo a mi gusto, que a veces tengo unos estándares algo exigentes, y ¡ya tengo IMAPs y POP3s! Solo falta ver si el ancho de banda de una conexión residecial con ONO es suficiente para jugar con IMAP desde fuera de casa (aunque seguiré descargando con POP cuando no esté de viaje).

Ah, y feliz Navidad y todo eso ;) .

Leer el post completo »

En: Uncategorized — December 25, 2008

The Useless Use of…

Me he encontrado con esta página a cuento de un rant de Jonathan Rockway en Useless use of “useless use”.

Aparte de la curiosidad de que me doy cuenta ahora de que es el escritor del último libro que he leído, la página a la que hace referencia es interesante.

No por el hecho que comenta Rockway, de rebuznar cuando alguien hace uso inútil de un comando shell (aunque puede ser muy educativo; que te avergüencen siempre funciona… no sé porqué), sino porque algunos de los casos que se comentan los he visto más de una vez, y apuntan a un desconocimiento del shell (y no siempre, como dice Rockway, es cuestión de claridad).

Por ejemplo, destacar de The Useless Use of ls:

for f in `ls *`; do
	command "$f"   # newbies will often forget the quotes, too
done

Seguro que lo hemos visto alguna vez, y seguro que lo hemos escrito alguna vez :D .

Recomiendo echar un vistazo a Useless Use of Cat Award (hay más Useless Uses, no solo hablamos de cat). Porque nunca es tarde para aprender, ¿no?

Leer el post completo »

En: Uncategorized — October 9, 2008

¿Un correo de Theo de Raadt en mi buzón?

El caso es que puse un bug report para OpenBSD 3.5, que me impedía trabajar… y que hizo que volviera la versión 3.4 en mi viejo y venerable portátil.

Esto fue… en Julio del año 2004.

Ahora recibo un correo tal que:

Synopsis: Virtual Timer Expires

State-Changed-From-To: open->analyzed
State-Changed-By: deraadt
State-Changed-When: Thu Oct 2 16:06:29 MDT 2008
State-Changed-Why:
Please re-test this PR and respond as to whether this problem still
exists.  Our PR database is full of many old errors, and this is an
effort to seperate the repaired bugs from unrepaired bugs.  Please
use http://cvs.openbsd.org/query-pr.html to refresh your memory about
the PR. Thank you.

Y el remitente es Theo de Raadt (no sé si en persona o suplantado :D ).

Por una parte está bien que vayan preguntando por errores viejos, por si siguen ahí, antes de cerrarlos, y por otra… a buena hora mangas verdes.

Alguna vez he comentado casos de éxito de soporte de la comunidad (de mi experiencia personal), y creo que era justo que aquí apareciera un caso de no-éxito también (porque los hay).

Leer el post completo »

En: Uncategorized — October 4, 2008

Número máximo de ficheros abiertos y MySQL

No hace mucho tuve problemas con tablas corruptas en MySQL, y no sabía porqué pasaba. Incluso me pasó una segunda vez, con cagada por mi parte :D .

Hoy ha vuelto a pasar, y no habían tablas corruptas, solo vi en los logs:

080610  2:47:49 /usr/local/libexec/mysqld: Can't find file: './blackshell/tblNoticia.frm' (errno: 9)

Junto al ya conocido:

Can't create/write to file '/tmp/#sql_2aa1_0.MYD'

He ejecutado un mysqlcheck (en caliente, con mysqld funcionando), y luego myisamchk en frío… y todas las tablas estaban perfectamente. WTF?!?!

Así que he buscado un poco más y me encontrado esto: ‘File’ Not Found and Similar Errors.

Vaya :( .

Leer más

Leer el post completo »

En: Uncategorized — June 10, 2008

Fenómenos extraños con stunnel y POP3s (¿y ONO?)

First bug ever

En este servidor tengo un servicio de POP3s (ese que me obliga a actualizar el certificado cada año :D ), que no es más que el protocolo POP3 transportado en una capa SSL (Secure Socket Layer), que cifra todo el tráfico entre cliente y servidor de forma que la comunicación es bastante segura.

Mi elección de sistema operativo libre para este servidor es OpenBSD, que viene con un servidor POP3 bastante sencillo e integrado en el sistema: popa3d.

La única pega es que solo soporta la autenticación con LOGIN, que básicamente pide usuario y contraseña en texto plano, lo cual no es demasiado adecuado para recoger el correo por Internet. No implementan otros mecanismos, como APOP o CRAM-MD5, argumentando que la transferencia de los correos seguiría haciéndose de forma insegura (sin cifrar).

Tampoco es un problema insalvable, porque podemos utilizar stunnel para añadir esa capa SSL y obtener con el conjunto un servidor seguro bastante resultón :) .

stunnel tiene dos ramas diferenciadas: la 3 (bien documentada, incluso tengo publicada una receta sobre POP3s y OpenBSD), y la 4 (completamente nueva, y sin mucha documentación).

Llevo mucho tiempo con problemas, pero lo achacaba al cambio a la rama 4, hasta que el fin de semana pasado empeoró todo y tuve que arreglarlo, aprendiendo mucho por el camino :) . ¿Es posible que el responsable fuera mi ISP?

Leer más

Leer el post completo »

En: Uncategorized — May 31, 2008

Soporte IPv6 en httpd(8), en OpenBSD

Esta es una gran noticia, porque ya comentaba hace tiempo que Apache era la gran ausencia en cuanto a soporte IPv6 en OpenBSD.

Hace ya casi tres años que concluyó el proyecto KAME, cuya misión y objetivo era desarrollar e implantar una implementación de referencia para IPv6/IPsec, y apenas hace dos años que IPv6 se considera maduro.

Pero en OpenBSD estaba pendiente el soporte IPv6 en httpd(8), porque el servidor Apache que incluye OpenBSD en su sistema base es de la rama 1.3. con modificaciones (mod_ssl y DSO) y múltiples parches no oficiales (como el chroot out-of-the-box).

Estas modificaciones hacían que fuera muy complicado incluir el soporte IPv6, porque los parches del proyecto KAME no eran compatibles, y además había que adaptar muchos módulos que no funcionarían tal cual con direcciones de IPv6. Hasta ahora :) .

Leo en undeadly: IPv6 Support in httpd(8), donde Marc Balmer nos cuenta cómo ha llevado a cabo la integración de IPv6, los problemas que se ha encontrado, y nos apunta a un README.IPv6 donde hay más detalles.

En fin, ya hemos comentado por aquí cómo se venía venir la adopción de IPv6, pero aún así es interesante ver como el Software Libre está cada vez más preparado.

Leer el post completo »

En: Uncategorized — May 19, 2008

OpenSSH soportará chroot por usuario

Bueno, esto puede ser el mejor invento desde la Coca-Cola, o cualquier otra tecnología creada por el hombre que proporcione equivalente satisfacción en nuestra vida diaria.

Hasta ahora no era fácil proporcionar cuentas shell restringidas, y quizás eso era un limitador para que se ofreciera SFTP en las soluciones de hospedaje en lugar del cutre e inseguro FTP. Pero las cosas cambian :) .

Leo en undeadly que OpenSSH tendrá soporte chroot, lo que significa que podremos tener cuentas SSH/SFTP para usuarios con confianza media ¡con chroot de casa!

Así podremos restringir esa cuenta a un árbol de directorios concreto, evitando que pueda pasearse por todo el sistema de ficheros.

Está muy bien explicado en el artículo de undeadly, y ya se ha incluído en el CVS, con lo que muy probablemente lo veamos funcionando en la próxima versión 4.3 de OpenSSH.

Leer el post completo »

En: Uncategorized — February 21, 2008

¿Aguantar la portada de Digg con 25MHz?

Resulta que en Pingdom escribieron una anotación sobre viejos MAC sirviendo páginas web (mola el titular: las viejas manzanas nunca se pudren, en lugar de eso mueven la web :D ), y acabó en portada de Digg.

Sabemos que este portal puede hacer llegar muchas visitas simultáneas a nuestro servidor, aunque sea un enlace indirecto como en este caso, y puede que la máquina tenga problemas con tanta carga. Pues anda que aguantar con solo 25MHz… tiene mérito.

Ya contaba yo algo parecido, la vida que pueden dar sistemas operativos libres como NetBSD a máquinas que son formalmente chatarra :) .

Ahora mismo el servicio está arriba, y ojo a las fotos: ¡lo han montado en un rack!

No está mal para una máquina del 89 que dejó de fabricarse en 1993. Yo diría que ha quedado amortizada :D .

Leer el post completo »

En: Uncategorized — February 11, 2008

Implementando un watchdog de emergencia

Un watchdog es, como su nombre indica, un perro guardian ;) , que en general se encarga de monitorizar un aspecto del sistema para llevar a cabo una acción cuando algo falla. Alguna vez he puesto uno por aquí.

Bueno, es una definición un poco de estar por casa, como lo que voy a explicar ahora: cómo hacer un sencillo watchdog para un servicio, con un shell y herramientas comunes en cualquier entorno Unix.

Ayer un compañero me pidió que le echara una mano con el servidor de un ex-cliente, y como cada vez se puede dedicar menos tiempo a mantener esa máquina, decidimos poner un watchdog para un servicio que había dado problemas ocasionalmente pero no podíamos diagnosticar y corregir.

Vamos a suponer un caso bastante frecuente, en el que el servicio es un solo proceso, que además guarda su PID en un fichero.

Nuestro watchdog haría lo siguiente:

  1. Comprobar que el fichero PID existe: sino existe, eso es seguramente señal de que el servicio está parado.
  2. Verificar que el proceso indicado por ese PID, efectivamente está funcionando: sino encontramos el proceso, suponemos que el servicio ha terminado de forma imprevista (y no ha borrado el fichero, como es habitual).
  3. Si se cumple cualquiera de los puntos anteriores, lanzamos el servicio (borrando el fichero del PID en caso de ser necesario, para evitar que el servicio piense que ya está en marcha).

Es un watchdog muy rudimentario que correríamos desde cron(8) con la frecuencia que creamos conveniente.

Más o menos la implementación que hice ayer fue la siguiente, un poco revisada para publicarlo aquí (claro :D ):

#!/bin/sh

# configurable
PIDFILE="/var/run/bogom/bogom.pid"
DAEMON="/usr/local/libexec/bogom"
MAILTO=administrador

# Arranca el servicio y manda un mail al admin
up_and_notice()
{
	$DAEMON
	echo "He arrancado $DAEMON (resultado $?), un saludo :) " 
| mail -s "$0 en `hostname`" $MAILTO
}

# existe el fichero con el PID?
if [ ! -f $PIDFILE ]; then
	up_and_notice
	exit 0
fi

PID=`cat $PIDFILE 2> /dev/null`

# hay efectivamente un PID?
if [ "X" == "X$PID" ]; then
	up_and_notice
	exit 0
fi

ps -p $PID 2> /dev/null 1> /dev/null

# existe el proceso con ese PID?
if [ $? -ne 0 ]; then
	# si no existe, el fichero sobra
	rm $PIDFILE

	up_and_notice
	exit 0
fi

# EOF

En el ejemplo he usado el servicio de bogom (no porque lo necesite, ojo :D ), y como bonus se envía un correo al administrador para informar de que se ha levantado otra vez el proceso.

En este caso el watchdog lo tiene que correr root, así que añadiríamos el script en el crontab(5) de ese usuario. Sería muy raro que funcionara tal cual para otros casos, pero como es muy sencillo, seguro que resulta fácil de adaptar.

No me gustan mucho los watchdogs, pero es bueno asumir que todos los programas tienen fallos y a veces causan problemas, y no siempre hay un administrador para ver qué está pasando. En la mayoría de las veces el fallo es anecdótico, y con volver a arrancar: solucionado ;) .

Leer el post completo »

En: Uncategorized — November 25, 2007

buddy icon Planeta BSD, es un planeta que recopila escritos en español relacionados con los sistemas BSD (FreeBSD, OpenBSD, NetBSD,...) y todo lo relacionado con ellos. Hay pocos sitios que hablen sobre BSD en español, y los que hay cuesta encontrarlos, con este planeta pretendo juntar todos esos Blogs o Webs en las que comentan sus aventuras con *BSD.

Secciones

Buscador

Pulsa ENTER al terminar de escribir

Categorias


Warning: Invalid argument supplied for foreach() in /home/inkilino/public_html/Planetas/planetabsd.es/wp-includes/template-functions-category.php on line 321

Contribuidores


Sindicar

Puedes Sindicar el contenido de este blog en tu lector de noticias usando alguna de las siguientes formas: RSS 2.0 o Atom



Creado por Diseño y Desarrollo Web y gestionado con WordPress

Planeta BSD © 2012 — Algunos derechos reservados

compuntoes