Hoy me encontré con un problema en un simple script que hice para backupear algunas bases de datos MySQL:
#!/bin/sh
# Hace dumps de MySQL de las BBDDs especificadas
DBS="db1 db2 dbN"
DUMPDIR="/root/mysql-dumps"
ADMIN="alertas@midominio.com"
REPORT="/tmp/mysql-dump-bases-importantes.$$.log"
ERRORS=0
HOSTNAME=`hostname -f`
cd $DUMPDIR
for db in $DBS
do
/usr/bin/mysqldump -Q $db | gzip -9 > dump-$db-`date +"%F_%T"`.sql.gz
ERR=$?
if [ "$ERR" == "0" ]; then
echo "Dumping database '$db' done OK" >> $REPORT
else
echo "Dumping database '$db' FAILED" >> $REPORT
ERRORS=1
fi
done
if [ "$ERRORS" == "0" ]; then
cat $REPORT | mail -s "MySQL Dumps on $HOSTNAME: OK" $ADMIN
else
cat $REPORT | mail -s "MySQL Dumps on $HOSTNAME: ERRORS" $ADMIN
fi
rm $REPORT
Este script usa mysqldump para sacar una imágen de cada base de datos, y supuestamente guarda en la variable $ERR el valor de salida para enterarnos en caso que haya problemas, y mandar así el mensaje adecuado en el reporte.
El problema que tiene este script es que la variable $? retorna el valor de salida del último comando en un pipe, en mi caso corresponde a la salida del gzip, que siempre sale correctamente (al menos en este script). Entonces ¿cómo nos enteramos que pasó con un comando anterior en la cadena?
Bash (no conozco otros shells) tiene una variable $PIPESTATUS, que es un array con los valores de salida de una serie de comandos encadenados, por lo tanto lo único que hizo falta para corregir este programa, es reemplazar la línea que dice:
ERR=$?
…por lo siguiente:
ERR=${PIPESTATUS[0]}
El subíndice 0 corresponde al primer valor del array, y que coincide con el primer comando de la cadena de comandos.
Para romper el extenso silencio de mi blog, voy a comentarles sobre un sitio nuevo que se está gestando y que a muchos de ustedes les puede llegar a interesar.
Muchas veces hemos comparado el software con una receta de cocina, y el acto de compartir esa receta para probarla, mejorarla y volverla a compartir como la publicación del software con alguna licencia libre.
Esta vez no voy a hablar de software sino de las recetas de cocina, y es que no son recetas cualquieras, sino las recetas que la madre de mi amigo Cristian usa para crear sus impresionantes platos, delicias que muchos hemos tenido el privilegio de saborear.
El sitio está planteado a modo de blog, pero además nos presenta en cada receta las características y tiempos de preparación, para poder planificar con tiempo en el caso de intentar emular la gran chef
Parece que Google está probando o implementando su funcionalidad de Safe Browsing en los resultados de búsqueda, y quizás se le pasó un poquito la mano con lo estricto de su chequeo
Este es un post bastante retrasado, pero bueno… mas vale tarde que nunca!
Varios compañeros de práctica de Aikido me han preguntado donde están las fotos de la despedida, así que aprovecho a publicarlas acá también ya que me he enterado que leen mi blog!
La cena estuvo muy buena y como postre, Sensei Héctor hizo la entrega oficial de las libretas y diplomas a todos los que rendimos el exámen de Dan.
De paso, aprovecho a probar la funcionalidad de álbum embebido que me provee PicasaWeb
Comentarios recientes