Linux Shell Scripting Cookbook

Linux-shell-scripting-cookbook

El uso apropiado de comandos por consola puede ayudarnos a encontrar soluciones para problemas con apenas algunas lineas de código.

La mayoría de los usuarios de GNU/Linux por falta de conocimiento desperdiciamos el potencial del shell de Linux.

Este buen libro nos ayuda de la manera más sencilla posible (con ejemplos) a sacarle provecho a esta maravillosa herramienta.

Linux-shell-scripting-cookbook

Fecha de publicación: Enero de 2011.

Idioma: Inglés

360 páginas

Formato: PDF (13 MB)

Pulsa AQUI para descargarte el libro Linux Shell Scripting Cookbook

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

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

Recomponer archivos tar.gz que se han descomprimido sin crear directorio

¿A quién no le ha ocurrido? Descargas un fichero.tar.gz en /home/tuuusuario/ , invocas el conjuro para desempaquetar y descomprimir:

tar -xvzf fichero.tar.gz

Y cuando observas el resultado te das cuenta que el muy *HIJO DE ****PIiiI*****uta* se ha descomprimido SIN crear un directorio para el contenido que tiene dentro, o sea, ha dejado todo tu $HOME lleno de ficheros. Es lo que se conoce como una bomba tar.

Bien, el siguiente comando atb (anti-tar-bomb), encontrado en commandlinefu.com, analiza el tar.gz (o .bz2 o .tgz) ANTES de descomprimirlo. Si resulta que se trata de una bomba tar, crea un directorio con el mismo nombre X que el fichero X.tar.gz y luego lo descomprime en X. Magia!

 atb() {shopt -s extglob ; l=$(tar tf $1); if [ $(echo "$l" | wc -l) -eq $(echo "$l" | grep $(echo "$l" | head -n1) | wc -l) ]; then tar xf $1; else mkdir ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)} && tar xf $1 -C ${1%.t@(ar.gz|ar.bz2|gz|bz|ar)}; fi ; shopt -u extglob} 

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

Script de Nautilus para compartir cualquier directorio en Internet con Ubuntu

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Hasta el momento la forma mas fácil de compartir archivos en Internet con todo el mundo es usando algún servicio de compartición o sincronización de archivos, tales como Ubuntu One, Dropbox, Wingedbox, etc.

Pero el usuario de Gnome-Look hardball ha subido a Gnome-Look un script que hace lo mismo que cualquiera de estos servicios pero directamente desde tu equipo y en unos cuantos segundos, permitiéndote compartir todo lo que quieras con el que quieras por el puerto :8000 de tu equipo.
El script te permite incluso compartir directorios montados con gvfs, como los directorios de Windows, y lo única dependencia que necesita para funcionar es Zenity.

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Otro punto a favor de este script seria el mantener todos tus datos dentro de tu propio equipo, mas que nada en estos días donde la privacidad cumple un papel tan importante y donde incluso el concepto de los servicios en la nube se pone a prueba por el lanzamiento de Google Chrome OS.

Ahora para instalar el script solo debes descargarlo desde Gnome-Look – share-http-here, darle permisos de ejecución, copiarlo al directorio ~/.gnome2/nautilus-scripts/ y reiniciar Nautilus para poder acceder a este desde el menú contextual Scripts del directorio que desees compartir.

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

También puedes ejecutar los siguientes comandos en la terminal para instalarlo de forma mas sencilla:

wget http://gnome-look.org/CONTENT/content-files/136489-share-http-here chmod +x ./136489-share-http-here mv 136489-share-http-here ~/.gnome2/nautilus-scripts/share-http-here nautilus -q 

Comparte cualquier directorio en Internet en 10 segundos solo con Nautilus y un Script

Nota: es posible que tengas que modificar el script en caso de tener conexión por medio de WiFi en lugar de cableada. Para esto solo tienes que reemplazar eth0 por wlan0 dentro del script.