lunes, 13 de abril de 2009

UTF-8, Apache2 y PHP5

Hace tiempo,un año más o menos, escribí un post en el que comentaba los pasos para habilitar la codificación UTF-8 para el webmail squirremail.

Un año después, me envían un fichero SQL con información para alimentar campos para la BBDD del proyecto en el que estoy trabajando actualmente. La codificación de esta tablas está en

martes, 7 de abril de 2009

Script Backup [ tar , md5 , cifs ]

Dejo un pequeño script para backups en un disco Western Digital de 1TB con Ethernet 1GB. Resumen:
  • De Lunes a Sabado realiza backup de los directorios definidos en $DESTINO.
  • Los Domingos añade los directorios definidos en $DIRECTORIO_ADICIONALES.
  • Mantiene los ficheros durante 14 días.Suficiente en este caso.
  • Opcion gzip comentada, haciendo pruebas me interesaba observar el funcionamiento del script.Se recomienda descomentar la linea.
  • Comprueba el montaje del directorio destino, en este ejemplo /usb/copias.
  • Detalles en el fichero log especificado en la variable $REPORTE.
  • Genera suma md5 del fichero y lo imprime en el log.
  • Envia por correo el resultado del backup.
No es nada del otro mundo, pero funciona. Las sugerencias son bienvenidas!

#!/bin/bash
#Backup Script Alberto Permuy Leal
#Version 0.0.1
#Licencia: GPLv2 o cualquiera de sus variantes
#
#
#
#
#Fecha: Abril 2009
#
#
#Definicion de variables
#
#Fichero Reporte Backup
REPORTE=/tmp/reporte-backup-$(date +%d-%m-%y).txt
#
#Variables Tiempo
FECHA=$(date +%d-%m-%y)
DIA_SEMANA=`echo $(date +%w)`
#
#Variables Host/Fichero
HOST=`/bin/hostname `
SISTEMA=`/bin/uname -sr `
#
#
#Variables Generales
DESTINO="/usb/copias"
DIRECTORIOS_BACKUP="/etc /root /var/lib/mysql"
DIRECTORIO_ADICIONALES="/var/log"
DESTINATARIO="user@dominio.com"
ASUNTO="InformeBackup"
#
#
#CABECERA
rm -rf $REPORTE
touch $REPORTE
echo "-----------------------------" > $REPORTE
echo "REPORTE BACKUP " >> $REPORTE
echo "-----------------------------" >> $REPORTE
echo "" >> $REPORTE
echo "Host:"$HOST >> $REPORTE
echo "Sistema:"$SISTEMA >> $REPORTE
echo "" >> $REPORTE
echo "Fecha Copia Seguridad :"$FECHA >> $REPORTE
echo "El destinatario del email es:"$DESTINATARIO >> $REPORTE
###############################################################
# #
#COMIENZO DEL SCRIPT #
# #
###############################################################
if [ -d /usb/copias ]; then
echo "Parece que el disco USB está montado"
else
echo "Montando disco USB"
mount.cifs //192.168.1.200/PROGRAMAS /usb -o username=user,password=pass,rw
echo "Fin montaje"
fi
#
#
case $DIA_SEMANA in
1)
NOMBRE_DIA="lunes"
;;
2)
NOMBRE_DIA="martes"
;;
3) NOMBRE_DIA="miercoles"
;;
4)
NOMBRE_DIA="jueves"
;;
5) NOMBRE_DIA="viernes"
;;
6) NOMBRE_DIA="sabado"
;;
0) NOMBRE_DIA="domingo"

esac

case $DIA_SEMANA in

[1-6])
echo "Hoy es :"$NOMBRE_DIA
echo "Backup iniciado a las: "`date |awk '{ print $4 }'` >> $REPORTE
rm -rf $DESTINO/$NOMBRE_DIA-old.tar
mv $DESTINO/$NOMBRE_DIA.tar $DESTINO/$NOMBRE_DIA-old.tar
tar cvf $DESTINO/$NOMBRE_DIA.tar $DIRECTORIOS_BACKUP
#gzip $DESTINO/$NOMBRE_DIA.tar
echo "El fichero ocupa :"`du -sh $DESTINO/$NOMBRE_DIA.tar|awk '{ print $1 }'` >> $REPORTE
echo "Se ha realizado backup de los directorios:"$DIRECTORIOS_BACKUP >> $REPORTE
echo "La suma MD5 del fichero es:"`md5sum $DESTINO/$NOMBRE_DIA.tar|awk '{ print $1 }'` >> $REPORTE
echo "Esta cifra puede ayudarle a comprobar coherencias en caso de restaurar la copia." >> $REPORTE
if [ -f $DESTINO/$NOMBRE_DIA-old.tar ]; then
echo "El fichero de la semana anterior existe.Parece que todo esta en orden." >> $REPORTE
else
echo "El fichero de la semana anterior no existe." >> $REPORTE
echo "Es probable que todavia no se haya cumplido el ciclo de rotaciones de backups." >> $REPORTE
echo "Si continua recibiendo este mensaje.Contacte con el Administrador." >> $REPORTE
fi
echo "Backup finalizado a las: "`date |awk '{ print $4 }'` >> $REPORTE

;;
0)
echo "Hoy es Domingo.Se han añadido directorios adicionales a la copia de seguridad." >> $REPORTE
echo "Son los siguientes :"$DIRECTORIOS_ADICIONALES >> $REPORTE
echo "Backup iniciado a las: "`date |awk '{ print $4 }'` >> $REPORTE
rm -rf $DESTINO/$NOMBRE_DIA-old.tar
sleep 2
mv $DESTINO/$NOMBRE_DIA.tar $DESTINO/$NOMBRE_DIA-old.tar
sleep 2
tar cvf $DESTINO/$NOMBRE_DIA.tar $DIRECTORIOS_BACKUP $DIRECTORIOS_ADICIONALES
#gzip $DESTINO/$NOMBRE_DIA.tar
echo "El fichero ocupa :"`du -sh $DESTINO/$NOMBRE_DIA.tar|awk '{ print $1 }'` >> $REPORTE
echo "Se ha realizado backup de los directorios:"$DIRECTORIOS_BACKUP >> $REPORTE
echo "La suma MD5 del fichero es:"`md5sum $DESTINO/$NOMBRE_DIA.tar|awk '{ print $1 }'` >> $REPORTE
echo "Esta cifra puede ayudarle a comprobar coherencias en caso de restaurar la copia." >> $REPORTE
if [ -f $DESTINO/$NOMBRE_DIA-old.tar ]; then
echo "El fichero de la semana anterior existe.Parece que todo esta en orden." >> $REPORTE
else
echo "El fichero de la semana anterior no existe." >> $REPORTE
echo "Es probable que todavia no se haya cumplido el ciclo de rotaciones de backups." >> $REPORTE
echo "Si continua leyendo este mensaje.Contacte con el Administrador." >> $REPORTE

fi
echo "Backup finalizado a las: "`date |awk '{ print $4 }'` >> $REPORTE

;;

esac
echo "-----------------------------" >> $REPORTE
echo "SysAdmin - Alberto Permuy Leal" >> $REPORTE
echo "Contact :" >> $REPORTE
echo "Email: email at dominio com" >> $REPORTE
echo "Mobile: +0034 666 666 66 " >> $REPORTE
echo "-----------------------------" >> $REPORTE
mail -s $ASUNTO $DESTINATARIO < $REPORTE

lunes, 6 de abril de 2009

Alternativas a Postfix: ssmtp

Habitualmente , no necesitamos configurar un servidor de correo en un sistema Linux de escritorio. La mayoría de los clientes de email gráficos(GUI), como por ejemplo Mozilla Thunderbird, soportan configuraciones IMAP y POP3 para cuentas de Gmail.Pero, ¿cómo envías un email por el típico /usr/bin/mail o por un shell script? Aplicaciones como Sendmail,Postfix o Exim pueden ser configurados como relayhost de Gmail, pero requieren un mayor tiempo de configuración.

Podemos usar Gmail como "smart host" para enviar todos los mensajes desde un sistema Linux/Unix de escritorio. Necesitas una aplicación simple llamada ssmtp, que acepta el envio de mensajes desde una entrada estándar a buzones de correo específicos desde la línea de comandos , que redirige el mensaje al MTA configurado como relayhost. Los mensajes fallidos se depositan en el fichero dead.letter, dentro directorio home del usuario que envia el mensaje.
Instalar ssmtp
En sistemas Fedora/RedHat/CentOS

[root@localhost] yum install ssmtp

En sistemas Debian GNU/Linux / Ubuntu

[root@localhost] apt-get update && apt-get install ssmtp

Configurar gmail como relayhost:
Editamos el fichero /etc/ssmtp/ssmtp.conf con el siguiente contenido

AuthUser = usuario@gmail.com
AuthPass = passwordgmail
FromLineOverride = YES
mailhub = smtp.gmail.com:587
UserSTARTTLS = YES

También debemos asegurarnos de deshabilitar Sendmail:
En sistemas Fedora/RedHat/CentOS

[root@localhost] service sendmail stop
[root@localhost] chkconfig sendmail stop
[root@localhost] mkdir /root/.backup
[root@localhost] mv /usr/sbin/sendmail /root/.backup
[root@localhost] ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

En sistemas Debian GNU/Linux / Ubuntu

[root@localhost] /etc/init.d/sendmail stop
[root@localhost] update-rc.d -f sendmail remove
[root@localhost] mkdir /root/.backup
[root@localhost] mv /usr/sbin/sendmail /root/.backup
[root@localhost] ln -s /usr/local/ssmtp/sbin/ssmtp /usr/sbin/sendmail

Ahora ya podemos usar el comando mail o mailx para enviar mensajes, y probar la configuración con el siguiente ejemplo:

echo "Email Prueba" | mail -s "Probando 1,2,3" usuario@dominio.com

Nota acerca de ssmtp:
ssmtp funciona perfectamente para equipos de escritorio, pero no es un reemplazo a Sendmail, Postfix o Qmail.
Nota del traductor: Añadida la distinción entre Debian/Fedora a la hora de deshabilitar sendmail.El artículo original lo podéis encontrar aquí , escrito por Vivek Gite.


jueves, 2 de abril de 2009

Articulo Squid 2.6 Linux + DVD



Hace más de año que han publicado el artículo de Squid que escribí para Linux + DVD. Dejo la URL, por si interesa. La verdad es que ni me acordaba, pero posteo el enlace por nostalgía de otros tiempos que no fueron mejores, curioso, no?

Squid 2.6 en la PYME por Alberto Permuy Leal

miércoles, 1 de abril de 2009

Genial!

JRMora, genial , como casi siempre. Recomiendo encarecidamente visitar su web http://www.jrmora.com .