Script para hacer backups de base de datos via SMB, indicando el número de días a respaldar

Hola amigos de blogofsysadmins aqui les dejo otro script en bash que uso para hacer backup de mis bases de datos Mysql en un servidor FreeNas via SMB (Samba), son bastante útiles si se ponen en un cron job y automaticamente hacer los respaldos por las noches o cuando querais¡¡

Cada uno ya que personalice el script base a sus necesidades

#!/bin/bash
Backup_dir_temp="/shellscripts/temp"
Work_dir="/shellscripts/workdir"
Mount_dir="//192.168.0.xxx/Backups/Web_Databases"
Backup_files="*.sql"
Days=7
Day=$(date +%F)


#Respaldamos nuestrass bases de datos(cabia los datos tus datos)
cd $Backup_dir_temp
mysqldump -uroot -pPassword Database_1 > Database_1_$Day.sql
mysqldump -uroot -pPassword Database_2 > Database_2_$Day.sql
mysqldump -uroot -pPassword Database_3 > Database_3_$Day.sql
mysqldump -uroot -pPassword Database_4 > Database_4_$Day.sql
mysqldump -uroot -pPassword Database_5 > Database_5_$Day.sql


Archive_file="Databases_Backup_$Day.zip"

#montamos Mount_dir via samba en Backup_dir
mount -t cifs //192.168.0.xx1/Backups/Web_Databases $Work_dir -o username=myUserName,password=myPassword

#Eliminanos el archivo mas viejo si ya se cumplieron "$Days" dias
# Contamos el numero de archivos que hay en el directorio de respaldo

file_count=`ls $Work_dir | wc -l`

# Comparamos si hay mas de $days archivos para borrar el mas viejo
if [ $file_count = $Days ]
then
cd "$Work_dir" && ls -tr | head -n 1 | xargs rm -f
echo "Removiendo el archivo mas viejo..."
else
echo ""
fi

#Creamos el archivo comprimido con todos los archivos sql 

zip -r "$Work_dir"/$Archive_file  $Backup_files

#Borramos el directorio temporal
rm -rf $Backup_dir_temp/*.*


#Desmontamos el directorio SMB 
umount $Work_dir

Activar la opción de trabajar con tablas vinculadas en PhpMyAdmin

PhpMyAdmin incluye opciones para relacionar tablas (de tipo InnoDB), pero muchas veces vienen desactivadas y al darle al boton operaciones en la base de datos, aparece el error: Las opciones adicionales para trabajar con tablas vinculadas fueron desactivadas. Para saber porqué, dé clic aquí.

Para activarlas debemos añadir algunas opciones a los ficheros de configuración del PMA.

En algunos paquetes que integran Apache, MySQL y PHP no es necesario configurar nada porque ya traen activadas por defecto estas opciones, comoXAMPP. En otros paquetes, aunque configures estas opciones, es posible que sigan sin funcionar las relaciones, como en el WAMP.

Para lograr que funcionen las relaciones debemos seguir estos pasos:

  1. Comprobar si tenemos una tabla llamada phpmyadmin. Si no es así, ejecutar el script create_tables.sql, que está en la carpeta de scripts de phpmyadmin.
    Esta es una tabla que usa PMA internamente para ofrecer características adicionales, como las relaciones entre tablas.
  2. Acceder al fichero de configuración de PMA config.inc.php (en las versiones nuevas viene como config.default.php) y dejar estas opciones tal y como se indica a continuación:
    $cfg['Servers'][$i]['auth_type'] = 'http';
    $cfg['Servers'][$i]['controluser'] = 'pma';
    $cfg['Servers'][$i]['controlpass'] = 'pmapass';
    $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
  3. Crear un usuario MySQL para utilizar la relación entre tablas (que será el que indicamos anteriormente como controluser con la contraseña indicada en controlpass) y asignarle los correspondientes permisos:
    GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
    GRANT SELECT (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv) ON mysql.user TO 'pma'@'localhost';
    GRANT SELECT ON mysql.db TO 'pma'@'localhost';
    GRANT SELECT ON mysql.host TO 'pma'@'localhost';
    GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO 'pma'@'localhost';
  4. Reiniciar apache y acceder al PMA. Si todo ha salido bien, ya no tendremos el mensaje de error y aparecerá en el menú de arriba el botón diseñador, desde donde podremos establecer las relaciones entre tablas.

Más información:
PhpMyAdmin Wiki

Cambiar el score de Spamassassin de todos los Emails de un mismo dominio en Plesk

Todos los servidores webs que tienen Plesk y tienen emails creados tienen el mínimo servicio de protección para el SPAM de Spamassassin, pero no tiene la opción para cambiar la puntuación o score que tienen los buzones de email de un mismo dominio, así que aqui teneis un pequeño truco/trip que teneis que ejecutar desde la linea de comandos y como usuario root

ls /var/qmail/mailnames/dominio.com | awk '{print "/usr/local/psa/bin/spamassassin –update "$0"@dominio.com -hits 6"}' | sh 

Instalar plugins en WordPress automáticamente – TIP

Para instalar plugins en WordPress automáticamente y sin necesidad de tener que introducir datos de nuestro servidor ftp, podemos hacerlo de la siguiente manera.

1 .- Agregamos el siguiente código php al final de nuestro archivo wp-config.php

if(is_admin()) {
   add_filter('filesystem_method', create_function('$a', 'return "direct";' ));
   define( 'FS_CHMOD_DIR', 0751 );
}

2 .-  Por último damos permisos de escritura a los siguientes directorios:

/wp-content/plugins
/wp-content/themes
/wp-content/upgrade

Ahora cuando instalemos un plugin o tema en nuestro WordPress no necesitaremos agregar ningún dato y se instalarán automáticamente.

Error de Plesk con SSL en /var/log/sw-cp-server/error_log

El error que sale continuamente en el log de Plesk /var/log/sw-cp-server/error_log es el siguiente : Error: (connections.c.299) SSL: 1 error:140780E5:SSL routines:SSL23_READ:ssl handshake failure

La solución parece ser un bug de Plesk , aunque estuve googleando un buen rato, no encontré mucho sobre el tema, el caso es que estaba obteniendo este error en /var/log/sw-cp-server/error_log, además aparecía cada 6 minutos por lo que en 3 días con el servidor funcionando, ya tenía dos historicos del archivo comprimidos en .gz.

Finalmente, buscando en la ayuda de Plesk, encontré la forma de que no volviera a aparecer más, la verdad es que no tiene mucha complicación, lo único que tenemos que hacer es, generar un certificado, dependiendo de las necesidades de cada uno, se puede comprar o autogenerarlo, os hago un copy/paste de la solución en la ayuda de Plesk .

En caso de que necesite generar un certificado autofirmado, siga este procedimiento:

1. Vaya a Inicio > Seguridad > Certificados SSL. Se le mostrará una lista de los certificados SSL existentes en su repositorio.
2. Haga clic en Añadir Certificado SSL.
3. Indique las propiedades del certificado:
* Nombre del certificado. Este le ayudará a identificar este certificado en el repositorio.
* Nivel de Encriptación. Escoja el nivel de encriptación para su certificado SSL. Le recomendamos que escoja un valor superior a 1024 bits.
* Indique su ubicación y el nombre de la organización. Los valores introducidos no deben exceder los 64 símbolos permitidos.
* indique el nombre del servidor para el que ha adquirido el certificado SSL. Por ejemplo: your-domain.com
* Introduzca su dirección de email.
4. Haga clic en el botón Autofirmado. Se generará su certificado y se almacenará en el repositorio.