Archivo de la Categoría “Scripts”

Una de las mayores preocupaciones a la hora de administrar una página web, es encontrarnos con algún problema en el servidor y perder los datos que tenemos en el mismo.

Para evitar ésto, lo mejor es realizar copias de seguridad periódicas de nuestras bases de datos y archivos y mandarlos a un servidor externo (nuestro servidor doméstico o de la empresa).

A continuación os presento un script que hice en bash para automatizar dichas tareas, para usarlo sólo hay que cambiar las variables del inicio y programar la tarea con cron. Básicamente lo que hace es mandar por SCP la copia de seguridad de las bases de datos y los ficheros, permitiendo añadir una lista negra de palabras clave que harán que no se añada algún dominio o base de datos concreta. Además nos informará por correo electrónico si hubo algún problema.

El script está preparado para la estructura de un servidor con panel Plesk, adaptarlo a otro es muy sencillo, sólo hay que modificar la ruta donde están los dominios.

#!/bin/bash
##### Configuración
SERVER="xxxxxxxxxx.xxx"        # Dominio o IP destino
PORT="22"                      # Puerto SSH
USER="usuario"                 # Nombre de usuario de login
DBUSER="usuariodb"             # Nombre de usuario DB
DBPASSWD="usuariopass"         # Contraseña usuario DB
DESTDIR="/ruta/directorio"     # Directorio de destino
ADMINMAIL="mail@dominio.com"   # Correo para notificaciones
EXCLUDE=(nombre nombre.com)    # Lista negra de dominios o bases de datos
 
ERROR=""
fecha=$(date "+%F")
fechamail=$(date "+%d/%m/%Y")
 
##### Copia de seguridad de las bases de datos
mkdir /tmp/db_backup_full
DATABASES="$(mysql -u $DBUSER -p$DBPASSWD -Bse 'show databases')"
for db in $DATABASES
do
  case "${EXCLUDE[@]}" in *"$db"*) 
    ;;
  *)
    mysqldump --password=$DBPASSWD --user=$DBUSER --databases $db > /tmp/db_backup_full/$db.sql 2>/dev/null;;
  esac
done
tar cvjf "/tmp/databases $fecha.tar.bz2" -C /tmp db_backup_full > /dev/null
ERROR=$(scp -P $PORT -q "/tmp/databases $fecha.tar.bz2" $USER@$SERVER:$DESTDIR 2>&1)
rm -fr /tmp/db_backup_full
rm "/tmp/databases $fecha.tar.bz2"
 
##### Copia de seguridad de los archivos
mkdir /tmp/files_backup
for i in $( find /var/www/vhosts -name httpdocs ); do
  ARCHIVO=$(echo $i | sed -e 's/\/httpdocs//' -e 's/\.\///' -e '/\.skel/d')
  DOMINIO=$(echo $ARCHIVO | sed 's/\/var\/www\/vhosts\///g' | sed 's/\/.*//g')
  if [ "$DOMINIO" != "" ]; then
    case "${EXCLUDE[@]}" in *"$DOMINIO"*) 
      ;;
    *)
      FICHERO=$(echo $ARCHIVO.tar.gz | sed 's/\/var\/www\/vhosts\///g' | sed 's/\/subdomains\//_/g' | sed 's/\//_/g')
      CONF=$(echo $i | sed 's/httpdocs/conf/g')
      tar cvzf "/tmp/files_backup/$FICHERO $fecha.tar.gz" $i $CONF &> /dev/null
      ERRORNEW=$(scp -P $PORT -q "/tmp/files_backup/$FICHERO $fecha.tar.gz" $USER@$SERVER:$DESTDIR 2>&1)
      if [ "$ERRORNEW" != "" ]; then
        if [ "$ERROR" != "" ]; then
          ERROR="$ERRORNEW"
        else
          ERROR="${ERROR}\n${ERRORNEW}"
        fi
      fi;;
    esac
  fi
done
rm -fr /tmp/files_backup
 
# Comprobamos si hubo algún error al enviar el fichero
if [ "$ERROR" != "" ]; then
  echo -e "Error encontrado:\n$ERROR" | mutt -s "Error en backup de servidor web $fechamail" $ADMINMAIL
fi

Comments Comments Off

Desde ya hace mas de un año que podemos usar el Wiimote bajo GNU/Linux, como si de un periférico cualquiera se tratase, pero… ¿qué pasa si lo queremos usar habitualmente y no sólo como algo para flipar al coleguilla de turno?

Lo que aquí os propongo son dos scripts que conjuntamente con wminput monitorizan el uso del Wiimote, de manera que podemos hacerlo funcionar o apagarlo sin necesidad de ejecutar manualmente ningún comando.

(more…)

Comments 3 Comentarios »

Con el precio que tienen actualmente los sistemas de altavoces 5.1, cada vez somos más los que los tenemos instalados para disfrutar sobretodo de las películas, pero ¿qué pasa cuando la fuente de sonido es estereofónica?

Hay maneras de hacer que por defecto se dupliquen los canales delanteros hacia los traseros, de manera que, aunque el sonido sigue siendo estéreo, podemos disfrutar un poco más de él, pero sólo se trata de un parche que se aplica a todos los vídeos, incluídos los que son 5.1.

(more…)

Comments Comments Off

Mas de una vez nos vemos en la necesidad de ejecutar un programa cada vez que arrancamos el sistema, desde un P2P a la utilidad para controlar ciertos dispositivo.

Os voy a explicar en unos pocos pasos como cargar esto al arranque de Linux y algún pequeño truco para evitar que estos programas no dejen de ejecutarse.

La manera de realizarlo, será creando unos scripts de inicio, que guardaremos en /etc/init.d.

(more…)

Comments Comments Off