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:
1 |
chmod 750 nombrescript.sh |
o bien
1 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#!/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
1 2 3 |
#!/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
1 2 |
#!/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 .
1 2 3 4 5 6 7 8 |
#!/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/
1 2 3 4 5 6 |
#!/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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/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
1 2 3 4 5 6 7 8 9 10 11 |
#!/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
1 2 3 4 5 |
#!/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
1 2 3 |
#!/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
1 2 |
#!/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
1 2 |
#!/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
1 2 3 4 5 6 7 8 9 10 |
#!/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 |