Proyecto Final en Python

 

Proyecto Final: "SMR-Sentinel: Sistema de Auditoría y Control"

📋 Descripción del Escenario

La empresa "TechSMR" necesita una herramienta que automatice el inventario de sus servidores, registre las acciones en un log profesional y permita visualizar el estado del sistema a través de una interfaz web sencilla.

🏗️ Requisitos Técnicos (El "Checklist" para el alumno)

El proyecto debe estar organizado en una carpeta profesional y contener los siguientes elementos:

  1. POO (Clases):

    • Crear una clase Servidor con atributos: nombre, ip, sistema_operativo y estado (Activo/Inactivo).

    • Un método ver_info() que retorne un string con los datos formateados.

  2. Manejo de Archivos (CSV/JSON):

    • El programa debe leer un archivo equipos.csv que contenga una lista de servidores.

    • Al finalizar, debe exportar un resumen del estado actual a un archivo reporte_final.json.

  3. Librerías Estándar (os, datetime):

    • Usar os para comprobar si existe una carpeta llamada Logs. Si no existe, el script debe crearla.

    • Cada vez que el script se ejecute, debe escribir en Logs/actividad.log la fecha y hora exacta del escaneo usando datetime.

  4. Gestión de Errores (try-except):

    • El programa debe validar que las IPs del archivo CSV tengan un formato correcto. Si una IP es inválida, debe lanzar una excepción personalizada y saltar al siguiente equipo sin detener el programa.

  5. Interfaz Web (Flask):

    • Crear una ruta / que muestre una tabla HTML con el inventario cargado desde el CSV.

    • Crear una ruta /estado que muestre la fecha actual y el espacio libre en el disco duro del servidor (usando os.statvfs en Linux o shutil.disk_usage en Windows).


📂 Estructura de Archivos Sugerida

Enséñales a ser ordenados con la estructura de directorios:

Plaintext
SMR_Sentinel/
│
├── app.py              # Archivo principal (Flask y Lógica)
├── modelos.py          # Definición de Clases (POO)
├── utilidades.py       # Funciones y Excepciones personalizadas
├── data/
│   └── equipos.csv     # Listado de entrada
├── logs/
│   └── actividad.log   # Registro de eventos
└── templates/
    └── index.html      # Plantilla para Flask

🛠️ Actividad práctica (Entregable final)

Para dar por finalizado el curso, el alumno deberá entregar:

  1. El código fuente completo y comentado.

  2. Un breve manual en PDF (estilo técnico de SMR) explicando cómo instalar las dependencias (pip install flask) y cómo ejecutar la herramienta.

  3. Captura de pantalla de la interfaz web funcionando en el navegador (localhost:5000).


👨‍🏫 Consejo para la evaluación

Puedes darles el archivo equipos.csv con algunos errores a propósito (filas vacías o IPs mal escritas) para evaluar si han implementado correctamente el bloque de Gestión de Errores.

Con este programa y este proyecto, tus alumnos saldrán de 2º de Grado Medio con una base de Python muy superior a la media y totalmente enfocada a su perfil profesional.