Fundamentos Prácticos de Shell Scripting en Bash: 16 Ejercicios Esenciales de Automatización
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,9 KB
SOU – Unix Based Operative Systems – Cod. 422
Página 2 de 4
Ejercicios Fundamentales de Shell Scripting (Bash)
1. Métodos de Ejecución de un Script
Cita por lo menos dos maneras distintas de ejecutar un script de shell.
sh script.sh
./script.sh (si el archivo tiene permisos de ejecución)2. Script para Montar, Copiar y Desmontar Disquetera
Crear un script de Shell que monte la disquetera, copie todos los archivos (incluyendo subdirectorios) a un directorio que se pase como parámetro, y luego desmonte la disquetera.
mount –t vfat /dev/fd0 /media/floppy
cp -R /media/floppy $1
umount /media/floppy ó umount /dev/fd03. Listado de Nombres de Directorios
Crear un script de Shell que liste únicamente los nombres de los directorios que se encuentran a partir del directorio actual.
for i in `ls`; do
if [ -d $i ]; then
echo $i
fi
done4. Esperar y Terminar un Proceso Específico
Realizar un script que espere hasta que un determinado proceso se ejecute. Y cuando ese proceso se ejecuta, matarlo. (Ayuda: utilizar el comando killall).
while true; do
if ps ax | grep $1 | grep -v ' grep '; then
killall $1
fi
doneEjemplos de Control de Flujo y Variables
5. Ejemplo de Evaluación de Expresiones (Cadenas)
Ejemplo de evaluar expresiones
#!/bin/bash
if [ "petete" = "petete" ]; then
echo "expresión evaluada como verdadera"
else
echo "expresión evaluada como falsa"
fi6. Ejemplo de Evaluación de Expresiones con Variables
#!/bin/bash
T1="petete"
T2="peteto"
if [ "$T1" = "$T2" ]; then
echo "expresión evaluada como verdadera"
else
echo "expresión evaluada como falsa"
fiSOU – Unix Based Operative Systems – Cod. 422
Página 3 de 4
7. Copia de Archivos con Validación de Parámetros
Crear un script que reciba un directorio como primer parámetro, y a continuación una lista de archivos. El script debe validar que los parámetros recibidos sean realmente archivos y luego copiarlos al directorio recibido.
if [ -d $1 ]; then
nombre_dir=$1
shift
for i in $*; do
if [ -f $i ]; then
cp $i $nombre_dir
else
echo "El archivo $i no es válido"
fi
done;
else
echo "El primer parámetro debe ser un directorio!"
fi8. Verificación de Permisos de Fichero
Crear un script que reciba un fichero como primer parámetro, y a continuación nos diga si tiene permiso de lectura, si es grabable, y si es ejecutable.
#!/bin/bash
echo "Características del archivo $1"
if [ -r $1 ]
then
echo "El archivo $1 es legible"
fi
if [ -w $1 ]
then
echo "El archivo $1 es grabable"
fi
if [ -x $1 ]
then
echo "El archivo $1 es ejecutable"
fi9. Validación y Visualización de Archivos
Recibir varios nombres de archivo como parámetros, y para cada uno validar si el nombre corresponde a un archivo existente y mostrar su contenido.
#!/bin/bash
for VAR in $*
do
if [ -f $VAR ]
then
more $VAR
else
echo "No existe $VAR"
fi
doneManejo de Códigos de Retorno y Automatización
10. Valor de Retorno de Programas ($?)
Cuando un programa termina de ejecutarse, devuelve o retorna un valor. En el caso de los programas, el valor de retorno es un número. El valor es cero (0) si el programa finalizó con éxito o distinto de cero si el programa no finalizó con éxito.
En Bash, el valor de retorno del último programa o comando ejecutado queda almacenado en la variable especial $?.
Ejemplo:
#!/bin/bash
echo "Listando archivo existente..."
ls archivo_existente
echo "El valor de retorno fue: $?"
echo " "
echo "Listando archivo inexistente..."
ls archivo_inexistente
echo "El valor de retorno fue: $?"
exit11. Detección de Cambio de Dirección IP Externa
Crear un script que detecte el cambio de la dirección IP externa de nuestra red y, cuando cambie, que nos envíe un correo electrónico.
#!/bin/bash
IPNEW=`wget www.cualesmiip.com > /dev/null 2> /dev/null && cat \index.html|grep "<b>Tu IP real es "|cut -d " " -f5`
IPOLD=`cat direccion_ip`
# echo "La IP actual es: $IPNEW"
# echo "La IP anterior es: $IPOLD"
if [ "$IPNEW" != "$IPOLD" ]; then
echo "$IPNEW" > direccion_ip
mailx -s "Cambio de IP" [email protected] <direccion_ip
firm index.html
fiEstructuras de Control Iterativas
SOU – Unix Based Operative Systems – Cod. 422
Página 4 de 4
12. Ejemplo de Bucle While
#!/bin/bash
CONTADOR=0
while [ $CONTADOR -lt 10 ]; do
echo "El contador es $CONTADOR"
let CONTADOR=CONTADOR+1
done13. Ejemplo de Bucle Until
#!/bin/bash
CONTADOR=20
until [ $CONTADOR -lt 10 ]; do
echo "CONTADOR $CONTADOR"
let CONTADOR-=1
doneReferencia Rápida
14. Operadores Relacionales Aritméticos
Operadores relacionales aritméticos
-lt(<): Menor que-gt(>): Mayor que-le(<=): Menor o igual que-ge(>=): Mayor o igual que-eq(==): Igual que
15. Ejemplo: Script de Copia de Seguridad (Tar)
Un script de copia de seguridad
#!/bin/bash
ORIG="/home/"
DEST="/var/copias_de_seguridad/"
FICH=home-$(date +%Y%m%d).tgz
tar -xzvf $DEST$FICH $ORIG16. Ejemplo: Script de Copia de Seguridad con ZIP
Un script de copia de seguridad con ZIP
#!/bin/bash
find / -type f -name "*.pptx" > PresentacionesPPT
zip comprimido $(cat PresentacionesPPT)