Puestos a compartir información, pongo a continuación una serie de scripts Bash que utilizo en diferentes entornos.
Para poder utilizar estos scripts tienes que guardarlos dentro de un archivo de texto y darle permisos de ejecución:
chmod 750 nombrescript.sh
o bien
chmod +x nombrescript.sh
Nombre: makekernel.sh
Descripción: Obtiene la última versión del kernel, la descarga, la configura optimizándola para el procesador actual y construye el paquete .deb
Ejemplo: ./makekernel.sh
#!/bin/bash
echo Installing required packages to build the kernel...
apt-get update 1>/dev/null 2>&1
apt-get -y --force-yes install wget gcc build-essential fakeroot tar grep sed libncurses5-dev kernel-package libssl-dev 1>/dev/null 2>&1
#DESTARCH=`cc -### -march=native -x c - 2>&1 | grep -v native | grep march | xargs -n 1 | grep march | cut -d= -f2`
DESTPARAMS=`gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 | cut -d\ -f9-`
DESTARCH=native
unset MAKEFLAGS
echo Looking for the latest kernel...
if [ -f /tmp/tmpkernel ]; then
rm /tmp/tmpkernel
fi
wget -q -O /tmp/tmpkernel https://www.kernel.org
KERNELURL=`cat /tmp/tmpkernel | grep .tar | head -n 1 | cut -d\" -f 2`
KERNELPACKAGE=${KERNELURL##*/}
KERNELVERSION=${KERNELPACKAGE##*-}
KERNELVERSION="${KERNELVERSION%.*}"
KERNELVERSION="${KERNELVERSION%.*}"
KERNELDIR="${KERNELPACKAGE%.*}"
KERNELDIR="${KERNELDIR%.*}"
KERNELEXT="${KERNELPACKAGE##*.}"
MICONFIG=`ls -bt miconfig* 2>/dev/null | head -n 1`
if [ ! -f "${MICONFIG}" ]; then
MICONFIG=`ls -bt /boot/config-* | head -n 1`
fi
rm -f linux-*.${KERNELEXT}
if [ -d linux ]; then
echo Cleaning previous compilation...
rm -rf linux
fi
echo Downloading kernel ${KERNELVERSION} from ${KERNELURL}...
wget ${KERNELURL} -q --show-progress -O ${KERNELPACKAGE}
echo Extracting...
tar -Jxf ${KERNELPACKAGE}
mv ${KERNELDIR} linux
echo Restoring configuration from ${MICONFIG}...
cp ${MICONFIG} linux/.config
cd linux
echo Tuning makefile...
sed -ri.bak 's/echo "\+"/#echo "\+"/' scripts/setlocalversion*
sed -ri.bak "s/\-O2/\-O3 \-march\=${DESTARCH} \-mtune\=${DESTARCH} \-pipe/g" Makefile
sed -ri.bak2 "s/\-Os/\-O3 \-march\=${DESTARCH} \-mtune\=${DESTARCH} \-pipe/g" Makefile
echo Running menu configuration tool...
make menuconfig
echo Making backup of config file: miconfig_${KERNELVERSION} ...
cp .config /usr/src/miconfig_${KERNELVERSION}
echo Building...
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-devel kernel_image kernel_headers
echo Done!
cd ..
ls -la linux*.deb
Nombre: aptkey.sh
Parámetros: 1º - identificador de la clave a descargar
Descripción: Obtiene una clave y la añade a apt, útil cuando se añade una nueva línea al sources.list
Ejemplo: ./aptkey.sh 13ABC01234
#!/bin/bash
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys "$1" || gpg --keyserver hkp://subkeys.pgp.net --recv-keys "$1"
gpg --export --armor "$1" | apt-key add -
Nombre: calcipv6.sh
Parámetros: 1º - IPv4
Descripción: Obtiene la dirección IPv6 equivalente a la pasada por parámetro
Ejemplo: ./calcipv6.sh 192.168.0.1
#!/bin/bash
printf "2002:%x%02x:%x%02x::\n" `echo $1 | sed 's/\./ /g'`
Nombre: createthumbnails.sh
Parámetros: 1º - ruta
Descripción: Crea una subcarpeta con thumbnails de las imágenes de la carpeta pasada por parámetro. Depende de ImageMagick.
Ejemplo: ./createthumbnails.sh .
#!/bin/bash
THUMBPATH="$1/thumbnails";
SIZE=200;
cd $1
mkdir -p $THUMBPATH
ls *.[jJ][pP][gG] | xargs -I {} convert -thumbnail $SIZE {} $THUMBPATH/{}
ls *.[gG][iI][fF] | xargs -I {} convert -thumbnail $SIZE {} $THUMBPATH/{}
ls *.[pP][nN][gG] | xargs -I {} convert -thumbnail $SIZE {} $THUMBPATH/{}
Nombre: download-web.sh
Parámetros: 1º - URL
Descripción: Crea una copia estática de una página web
Ejemplo: ./download-web.sh http://server/a/b/c/
#!/bin/bash
URL="$1";
[[ $URL != */ ]] && URL="$URL/";
TOTAL=$(( `echo "$URL" | grep -o / | wc -l` - 3 ));
#wget -nH --cut-dirs=$TOTAL --wait=1 --limit-rate=200K -np -r -p -k -U Mozilla $1
wget -nH --cut-dirs=$TOTAL --wait=1 -np -r -p -k -U Mozilla $1
Nombre: hostup.sh
Parámetros: 1º - hostname
Descripción: Comprueba si un host está levantado (responde a un PING)
Ejemplo: ./hostup.sh localhost
#!/bin/bash
if [ $# == 0 ]; then
echo "Too few parameters, please specify host to check."
exit;
fi;
ESTADO=`ping -c 1 -W 1 $1 | grep "bytes from" | wc -l`;
if [ $ESTADO == 1 ]; then
NOMBRE=`host $1 2>&1 | grep "does not exist" | wc -l`
if [ $NOMBRE == 0 ]; then
NOMBRE=`host $1 2>/dev/null | grep ame | cut -d \ -f 5 | wc -l`;
if [ $NOMBRE == 0 ]; then
NOMBRE=`echo $1 | cut -d. -f 1-`;
else
NOMBRE=`host $1 2>/dev/null | grep ame | cut -d \ -f 5 | cut -d. -f 1`;
fi;
else
NOMBRE=$1;
fi;
echo "PONG from $NOMBRE";
fi;
Nombre: ifacespeed.sh
Parámetros: 1º - Interfaz de red
Descripción: Mide la velocidad a la que está trabajando una interfaz de red.
Ejemplo: ./ifacespeed.sh eth0
#!/bin/bash
IFACE=$1;
DOWN_PREV=`cat /sys/class/net/$IFACE/statistics/rx_bytes`;
UP_PREV=`cat /sys/class/net/$IFACE/statistics/tx_bytes`;
sleep 1;
DOWN_NOW=`cat /sys/class/net/$IFACE/statistics/rx_bytes`;
UP_NOW=`cat /sys/class/net/$IFACE/statistics/tx_bytes`;
DOWN_FINAL=$((($DOWN_NOW - $DOWN_PREV) / 1024));
UP_FINAL=$((($UP_NOW - $UP_PREV) / 1024));
echo "Download: $DOWN_FINAL kb/s";
echo "Upload: $UP_FINAL kb/s";
Nombre: justcompile.sh
Parámetros: Ninguno
Descripción: Compila un kernel de linux usando todos los threads posibles según el procesador que tengamos. Se debe lanzar desde /usr/src, tener el código del kernel en la carpeta linux y el archivo de configuración .config. Depende de kernel-package.
Ejemplo: cd /usr/src && ./justcompile.sh
#!/bin/bash
unset MAKEFLAGS
cd linux
make-kpkg clean
CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot make-kpkg --initrd --append-to-version=-devel kernel_image kernel_headers
Nombre: puertos.sh
Parámetros: Ninguno
Descripción: Muestra los sockets (IPv4 e IPv6) abiertos por cada aplicación y a dónde están conectados.
Ejemplo: ./puertos.sh
#!/bin/bash
lsof -Pnl +M -i4
lsof -Pnl +M -i6
Nombre: tts.sh
Parámetros: 1º - Frase a pronunciar.
Descripción: Pronuncia la frase pasada por parámetro usando festival (Text To Speech).
Ejemplo: ./tts.sh hola
#!/bin/bash
echo "$1 " | sed -e "s/á/a/g" | sed -e "s/é/e/g" | sed -e "s/í/i/g" | sed -e "s/ó/o/g" | sed -e "s/ú/u/g" | /usr/bin/festival --tts --language spanish
Nombre: viewscheduler.sh
Parámetros: 1º - Unidad de disco a comprobar.
Descripción: Muestra el scheduler utilizado por el disco duro indicado por parámetro.
Ejemplo: ./viewscheduler.sh sda
#!/bin/bash
cat /sys/block/$1/queue/scheduler
Nombre: websnap.sh
Parámetros: 1º - URL
Descripción: Crea un pantallazo de la web recibida por parámetro. Depende de vncserver, chromium-browser e ImageMagick. No necesita un servidor X en funcionamiento. Tarda 10 segundos para garantizar que la página esté completamente cargada.
Ejemplo: ./websnap.sh http://www.google.es
#!/bin/bash
export DISPLAY=":99"
WIDTH=1024
HEIGHT=768
/usr/bin/vncserver $DISPLAY -geometry ${WIDTH}x${HEIGHT} -depth 24 1>/dev/null 2>&1
/usr/bin/chromium-browser --kiosk --disable-translate --disable-new-tab-first-run --no-first-run --disable-sync --disk-cache-dir=/tmp --display $DISPLAY "$1" > /dev/null 2> /dev/null &
/bin/sleep 10
/usr/bin/import -window root -display $DISPLAY "$2"
killall -s9 chromium-browser 1>/dev/null 2>&1
/usr/bin/vncserver -kill $DISPLAY 1>/dev/null 2>&1