Script para optimizar tablas InnoDB en MySQL

Cuando utilizamos MySQL es común optimizar tablas con muchos registros con cierta periodicidad, esto para solventar problemas de fragmentación, entre otros. La verdad esta es una de las cosas del modelo de PostgreSQL que echo en falta, quizás no es tan «amigable» pero todo queda claro desde el inicio.

En PostgreSQL hay un proceso de aspiradora (vacuum) que va eliminando periódicamente registros inutilizados en tablas, su configuración, pan nuestro de cada día para un admin de BBDD que debe ajustarlo con frecuencia.

Bueno…. Volviendo a MySQL, si necesita optimizar tablas InnoDB, lo mejor que puede utilizar son ALTER nulos, estas son instrucciones DDL de tipo ALTER sin parámetros que permiten seguir trabajando con las BBDD, porque realiza copias temporales en disco. La cuestión es que esta herramienta «reconstruye» la tabla y elimina, entre otros, los problemas de fragmentación.

Aquí les dejo un script para optimizar de «un sólo golpe» varias tablas InnoDB:

#!/bin/bash
 
if [ $# -lt 2 ]; then
        echo "You must specify database host"
        echo "Eg. script.sh MY_DATABSE 192.168.10.1"
        exit
fi
 
db="$1"
host="$2"
user="root"
declare -a tables=(Table1 Table2 Table3)
 
stty -echo
read -p "Enter MySQL's Admin password: " password
stty echo
 
for table in ${tables[@]}; do
        echo $table &&
        time mysql -u $user --password=$password -h $host $db -e "ALTER TABLE $table ENGINE=INNODB"
done

Básicamente optimizamos las tablas especificadas (en un arreglo) e imprimimos el tiempo que toma cada instrucción (time).

Si tiene la certeza de que todas las tablas de una BD son InnoDB y quiere optimizarlas todas aún más rápido, puede hacerlo valiéndose del comando «show tables»…

#!/bin/bash
 
if [ $# -lt 2 ]; then
        echo "You must specify database host"
        echo "Eg. script.sh MY_DATABSE 192.168.10.1"
        exit
fi
 
db="$1"
host="$2"
user="root"
 
stty -echo
read -p "Enter MySQL's Admin password: " password
stty echo
 
mysql -u $user --password=$password -h $host --batch --skip-column-names $db -e "SHOW TABLES" |
while read table; do
        echo $table &&
        time mysql -u $user --password=$password -h $host $db -e "ALTER TABLE $table ENGINE=INNODB"
done

La única diferencia es que las tablas ya no son especificadas a través de un arreglo (que recomiendo para BBDD grandes, donde optimizar todas las tablas podría demorar toda la vida), sino que se toman directamente del comando «SHOW TABLES» para una BD especificada.

Script para descargar videos flash en linux sin /tmp

Como todos sabemos la nueva versión de adobe flash plugin ya no deja los videos en la carpeta /tmp de linux, así que ese método ya no sirve para tal propósito. Por eso he creado un sencillo script para compartir aquí en mi blog, el cual explicaré como funciona de manera rápida y simple. Recuerda que si no te funciona bien o te gustaría ampliarlo lo puedes hacer de manera libre.
Continuar leyendo «Script para descargar videos flash en linux sin /tmp»

Actualizar y corregir permisos (UIDs) en Plesk

permisos-de-archivos

permisos-de-archivos

Tal vez os haya pasado, que tras copiar contenidos desde otro servidor Plesk, sobretodo cuando se hace con el comando rsync, se desajustan los nombres de usuario y grupo que tenian originalmente. Aqui dejamos un script en bash totalmente operativo que corrige todos estos permisos. Recordar esto es solo script en bash  para Plesk, funciona en cualquiera de sus versiones de Plesk en cualquier distribucion Linux, no tiene ninguna funcionalidad en otros entornos

#!/bin/bash
# Corrige los permisos de los archivos y directorios de los dominios
cat /etc/passwd |egrep vhos > /tmp/$$
wc=`wc -l /tmp/$$ |awk ‘{ print $1 }’ `
for i in `seq 1 $wc`
do
linea=`head -$i /tmp/$$ |tail -1`
user=`echo $linea |awk -F: ‘{ print $1}’`
home=`echo $linea |awk -F: ‘{ print $6}’`
echo “$user – $home”
#corrigiendo el home
chown root.root $home
chmod 755 $home
#corrigiendo el httpdocs y demas principales
for dir in httpdocs httpsdocs cgi-bin anon_ftp
do
if [ -d $home/$dir ];then
#el directorio
chown $user.psaserv $home/$dir
chmod 750 $home/$dir
#el contenido
chown $user.psacln $home/$dir/* -R
chmod 777 $home/$dir/* -R
fi
done
for dir in statistics subdomains web_users
do
if [ -d $home/$dir ];then
chown root.psaserv $home/$dir
chmod 755 $home/$dir
if [ -d $home/$dir/httpsdocs ];then
chown $user.psaserv $home/$dir/httpsdocs
chmod 750 $home/$dir/httpsdocs
chown $user.psacln $home/$dir/httpsdocs -R
chmod 777 $home/$dir/httpsdocs -R
fi
fi
done
done

Algoritmo descifrado de los routers wifi de Jazztel y Teléfonica

Los usuarios de jazztel y  Telefonica movistar que no hayan cambiado el nombre (ESSID) de sus wifis pueden ir pensando en hacerlo: El algoritmo ha sido descifrado. Por lo visto, el que sacó a la luz el algoritmo fue elvecinoo en este hilo de lampiweb En http://kz.ath.cx/wlan/ (Entre otros) se ingresa nombre y la MAC del router y te la clava.

A mi me gusta más la versión en Bash:

#!/bin/bash

echo CalcWLAN by a.s.r

if [ $# -ne 2 ]
then
echo "Usage: $0  "
echo
echo "Example: $0 WLAN_C58D 64:68:0C:C5:C5:90"
exit 1
fi

HEAD=$(echo -n "$1" | tr 'a-z' 'A-Z' | cut -d_ -f2)
BSSID=$(echo -n "$2" | tr 'a-z' 'A-Z' | tr -d :)
BSSIDP=$(echo -n "$BSSID" | cut -c-8)
KEY=$(echo -n bcgbghgg$BSSIDP$HEAD$BSSID | md5sum | cut -c-20)

echo "La puta clave es $KEY"

Teneis un mirror para generar la clave online aqui mismo:
https://blogofsysadmins.com/generador-de-claves-wifi-para-jazztel_xxxx-y-wlan_xxxx

Mas información:

http://www.hispasec.com/unaaldia/4487

http://elvecinoo.wordpress.com/

Script bash para instalar Adobe Flash Player 10.2 en Ubuntu / Linux

Se encuentra disponible la versión de Flash player 10.2 entre algunas de sus mejoras, la capacidad de reproduccion de videos completos para varios reproductores, y reducción en el consumo de recursos. A continuación dejo un script de instalación que me acabo de currar para la version de 32 bits:

#!/bin/bash

echo ":::::::::::::::::::::::::::::::::::::"
echo ": Instalador de Flash 10.2 (32 bits):"
echo ":::::::::::::::::::::::::::::::::::::"
gksudo echo "Empiza la instalacion. Se guardaran copias .backup de los plugins previos"
cd /tmp
FILE="http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_10_linux.tar.gz"
wget -c "$FILE"
tar xvf install_flash_player_10_linux.tar.gz

# Firefox y similares:
if [ -f /usr/lib/mozilla/plugins/libflashplayer.so ];
then
	sudo mv /usr/lib/mozilla/plugins/libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so.backup
	sudo cp libflashplayer.so /usr/lib/mozilla/plugins/libflashplayer.so
fi

if [ -f ~/.mozilla/plugins/libflashplayer.so ];
then
	sudo mv ~/.mozilla/plugins/libflashplayer.so ~/.mozilla/plugins/libflashplayer.so.backup
	sudo cp libflashplayer.so ~/.mozilla/plugins/libflashplayer.so
fi

# Chromium
if [ /usr/lib/chromium-browser/plugins ];
then
	sudo mv /usr/lib/chromium-browser/plugins/libflashplayer.so /usr/lib/chromium-browser/plugins/libflashplayer.so.backup
	sudo cp libflashplayer.so /usr/lib/chromium-browser/plugins/libflashplayer.so
fi

echo "Instalacion finalizada. Reinicie"
cd -

Para el que quiera instalarlo manualmente, nada. Es descomprimir el script y copiar el archivo libflashplayer.so a las rutas correspondientes, por lo general: /usr/lib/mozilla/plugins/, ~/.mozilla/plugins/ y /usr/lib/chromium-browser/plugins (si usas chromium). Acuerdate de sacar una copia del anterior, por si hubiera algun problema y quisieras volver a la versión que tenias previamente instalada.

Link de Adobe