Bienvenidos de nuevo a larebelion.com. Si estás cursando Sistemas Operativos o Administración de Sistemas, sabrás que la interfaz gráfica es para cobardes. Un verdadero Ingeniero Informático se mueve por la terminal de Linux como pez en el agua.
Para ayudarte a superar tus exámenes prácticos, hemos recopilado 10 ejercicios esenciales de Bash Scripting de distintas universidades españolas. Desde condicionales básicos hasta automatización de copias de seguridad. ¡Abre tu terminal y empecemos!
1. Comprobación de Archivos (UPM)
Enunciado: Crea un script que reciba el nombre de un archivo por parámetro y compruebe si existe y si tiene permisos de lectura.
ARCHIVO=$1
if [ -r "$ARCHIVO" ]; then
echo "El archivo existe y se puede leer."
else
echo "El archivo no existe o no hay permisos."
fi
2. Bucle For: Renombrado Masivo (UPC)
Enunciado: Escribe un script que busque todos los archivos con extensión .txt en el directorio actual y les añada la extensión .bak al final.
for archivo in *.txt; do
if [ -e "$archivo" ]; then
mv "$archivo" "$archivo.bak"
echo "Renombrado: $archivo a $archivo.bak"
fi
done
3. Bucle While: Leer un Fichero Línea a Línea (UGR)
Enunciado: Lee el contenido del archivo /etc/passwd e imprime solo los nombres de los usuarios (la primera palabra antes de los dos puntos).
while IFS=: read -r usuario resto; do
echo "Usuario encontrado: $usuario"
done < /etc/passwd
4. Operaciones Aritméticas Básicas (UCM)
Enunciado: Crea un script que pida al usuario dos números por teclado y muestre la suma, resta y multiplicación de ambos.
read -p "Introduce el primer número: " num1
read -p "Introduce el segundo número: " num2
suma=$((num1 + num2))
resta=$((num1 - num2))
multi=$((num1 * num2))
echo "Suma: $suma | Resta: $resta | Multiplicación: $multi"
5. Estructura Case: Menú Interactivo (UV)
Enunciado: Implementa un menú sencillo usando case que permita elegir entre ver la fecha actual, ver el espacio en disco o salir del script.
echo "1. Ver Fecha 2. Espacio Disco 3. Salir"
read -p "Elige una opción: " opcion
case $opcion in
1)
date ;;
2)
df -h ;;
3)
echo "Saliendo..."; exit 0 ;;
*)
echo "Opción no válida." ;;
esac
6. Funciones en Bash: Factorial (UC3M)
Enunciado: Crea una función recursiva o iterativa en Bash que calcule el factorial de un número pasado como argumento.
factorial() {
n=$1
if [ $n -le 1 ]; then
echo 1
else
prev=$(factorial $((n - 1)))
echo $((n * prev))
fi
}
echo "Factorial de 5 es: $(factorial 5)"
7. Uso de AWK: Filtrar Procesos (US)
Enunciado: Ejecuta el comando ps aux y usa awk para imprimir solo el PID (columna 2) y el comando (columna 11) de los procesos que pertenecen al usuario 'root'.
# Filtramos por root y usamos awk para formatear la salida
ps aux | awk '$1 == "root" {print "PID: " $2 " -> CMD: " $11}' | head -n 10
8. Automatización: Copia de Seguridad Simple (UAM)
Enunciado: Crea un script que comprima la carpeta /var/log en un archivo tar.gz. El nombre del archivo debe contener la fecha actual (ej. backup_2024-05-20.tar.gz).
FECHA=$(date +%Y-%m-%d)
ARCHIVO="backup_log_$FECHA.tar.gz"
tar -czf /tmp/$ARCHIVO /var/log 2>/dev/null
echo "Backup guardado en /tmp/$ARCHIVO"
9. Alerta de Espacio en Disco (UNED)
Enunciado: Script que comprueba si la partición principal (/) supera el 85% de uso. Si es así, muestra una advertencia en la terminal.
PORCENTAJE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$PORCENTAJE" -gt 85 ]; then
echo "¡PELIGRO! El disco está al $PORCENTAJE% de capacidad."
else
echo "Disco en estado óptimo ($PORCENTAJE%)."
fi
10. Creación Masiva de Usuarios (UMA)
Enunciado: Escribe un script que lea un archivo llamado usuarios.txt (un nombre por línea) y cree automáticamente una cuenta en el sistema para cada uno usando useradd.
ARCHIVO="usuarios.txt"
if [ ! -f "$ARCHIVO" ]; then
echo "No se encuentra el archivo $ARCHIVO"
exit 1
fi
while IFS= read -r user; do
sudo useradd -m "$user"
echo "Usuario $user creado exitosamente."
done < "$ARCHIVO"
No hay comentarios:
Publicar un comentario