Skip to content

Laboratorio 1: Laboratorio de Programación de Scripts en Linux

Resumen Ejecutivo

La sesión se centró en la explicación del laboratorio práctico consistente en el desarrollo de un script en Bash para Linux. El objetivo principal es aprender a automatizar tareas de administración de sistemas mediante la creación de un menú interactivo que consulte información del sistema (disco, procesador, usuarios) y gestione archivos. Se enfatizó la importancia de la programación modular y la correcta redacción de la memoria técnica explicativa.

Conceptos Clave Scripting en Bash:* Programación de secuencias de comandos para el intérprete del sistema operativo (Shell).

  • Automatización: Capacidad de ejecutar tareas repetitivas de administración sin intervención manual constante.
  • Programación Modular: Estructura de código que divide las funcionalidades en funciones o procedimientos independientes para mejorar la limpieza y el mantenimiento.
  • WSL (Windows Subsystem for Linux): Entorno compatible mencionado como opción válida para el desarrollo, además de máquinas virtuales o distribuciones nativas como Ubuntu.

📚 Desarrollo del Temario

1. Objetivos del LaboratorioEl propósito fundamental no es solo escribir código, sino entender cómo administrar eficientemente un sistema operativo.

  • Meta: Aprender a programar y desarrollar scripts en Linux.
  • Utilidad: Vital para la automatización de tareas de mantenimiento y monitoreo.
  • Requisito previo: Haber estudiado el Tema 5 (Shell de Linux y programación Shell).

2. Requisitos Funcionales del Script (El Enunciado)El profesor desglosó las funcionalidades específicas que debe tener el script. Debe mostrar un menú que se refresque tras cada acción hasta que el usuario decida salir.

A. Información del Sistema (Monitoreo)El menú debe ofrecer opciones para obtener:

  1. Espacio en disco: Visualizar el almacenamiento disponible.
  2. Tamaño de directorios: Calcular el espacio ocupado por un directorio específico (incluyendo sus ficheros y subdirectorios).

    Nota Técnica sobre el Directorio: En la ronda de preguntas, se aclaró que esta función debe recibir la ruta (path) como parámetro. Consejo del profesor: "Haz la prueba primero con el directorio donde ejecutas el script y luego implementa el paso de parámetros".

  3. Uso del procesador: Carga actual de la CPU.

  4. Usuarios conectados (Actuales): Quién está logueado en el momento.
  5. Usuarios conectados (Diferencial): Número de usuarios conectados desde la última vez que se consultó.

B. Gestión de Archivos y Texto

  1. Lectura de ficheros: Mostrar las últimas 5 líneas de un fichero de texto.
  2. Requisito: La ubicación del fichero se pasa como parámetro.

  3. Copia de seguridad selectiva:

  4. Copiar archivos con extensión .sh y .c.
  5. Origen y Destino pasados por parámetro.
  6. Condición lógica: Si el directorio destino no existe, el script debe crearlo.

3. Estructura y Arquitectura del Código

Aquí el profesor ofreció consejos que van más allá del enunciado escrito, enfocándose en la calidad del código.

El Menú InteractivoEl flujo del programa debe ser cíclico:

  1. Ejecutar Script -> Mostrar Menú.
  2. Usuario elige opción -> Se ejecuta la acción.
  3. Retorno: Vuelve a mostrarse el menú (no se cierra el programa).
  4. Salida: Solo termina si se pulsa la opción específica de "Salir".

Recomendación de Modularidad

Aunque el profesor aclaró que no es estrictamente obligatorio (no baja nota si no se hace), recomendó encarecidamente usar una estructura modular.

Cita del Profesor: "Una vez desarrollada la opción, yo lo que os pido es que sea lo más modular posible. Es decir, que desde la opción del case invoquéis a una función [...] aunque solo sea una única línea."

  • ¿Cómo hacerlo?: Utilizar una estructura case para el menú y llamar a funciones o procedimientos definidos al final del script para ejecutar la lógica.
  • Beneficio: El código queda mucho más "limpio" y profesional.

4. Entorno de DesarrolloNo se requieren herramientas propietarias complejas. Se puede utilizar:

  • Cualquier distribución Linux (ej. Ubuntu).
  • Máquina virtual.
  • Terminal de Mac.
  • WSL (Windows Subsystem for Linux): Es la herramienta que se usa habitualmente en las clases teóricas y es totalmente válida.

5. La Memoria Explicativa (Entregable)¡OJO AL DATO! 🧐

El profesor puso mucho énfasis en que el entregable no es solo el archivo .sh. La memoria debe seguir normas estrictas:

  • Contenido: Explicación de todo lo realizado, scripts y comandos utilizados.
  • Formato: Referencias bibliográficas siguiendo normas APA.
  • Apartado Crítico: Debe incluir una sección de Conclusiones.

    Requisito del profesor: "En la memoria quiero que incluya ese apartado de conclusiones donde [...] se describen las dificultades encontradas, cómo se han resuelto y la solución que se ha dado."


🧪 Preguntas de Autoevaluación

  1. ¿Cuál es el comportamiento esperado del menú tras ejecutar una acción (por ejemplo, ver el espacio en disco)?
  2. Respuesta: El script no debe terminar; debe volver a mostrar el menú principal para permitir al usuario seleccionar otra opción o salir.

  3. Si el directorio de destino para la copia de archivos .sh y .c no existe, ¿qué debe hacer el script?

  4. Respuesta: El script debe detectar que no existe y crearlo automáticamente antes de copiar los archivos.

  5. ¿Es obligatorio usar funciones para cada opción del menú?

  6. Respuesta: No es obligatorio (no penaliza nota), pero es una fuerte recomendación del profesor para mantener el código limpio y modular.

  7. ¿Qué debe incluirse obligatoriamente en el apartado de conclusiones de la memoria?

  8. Respuesta: Las dificultades encontradas durante el desarrollo y cómo se resolvieron.

  9. Para la opción de "Tamaño ocupado por un directorio", ¿cómo debe recibir el script la información del directorio a analizar?

  10. Respuesta: Debe pasarse como un parámetro (ruta/path).