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:
POO (Clases):
Crear una clase
Servidorcon atributos:nombre,ip,sistema_operativoyestado(Activo/Inactivo).Un método
ver_info()que retorne un string con los datos formateados.
Manejo de Archivos (CSV/JSON):
El programa debe leer un archivo
equipos.csvque contenga una lista de servidores.Al finalizar, debe exportar un resumen del estado actual a un archivo
reporte_final.json.
Librerías Estándar (
os,datetime):Usar
ospara comprobar si existe una carpeta llamadaLogs. Si no existe, el script debe crearla.Cada vez que el script se ejecute, debe escribir en
Logs/actividad.logla fecha y hora exacta del escaneo usandodatetime.
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.
Interfaz Web (Flask):
Crear una ruta
/que muestre una tabla HTML con el inventario cargado desde el CSV.Crear una ruta
/estadoque muestre la fecha actual y el espacio libre en el disco duro del servidor (usandoos.statvfsen Linux oshutil.disk_usageen Windows).
📂 Estructura de Archivos Sugerida
Enséñales a ser ordenados con la estructura de directorios:
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:
El código fuente completo y comentado.
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.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.