PYTHON – DÍA 7
Proyecto final: mini auditoría básica de sistema
1. Objetivo del día
Poner en práctica todo lo aprendido en los días anteriores construyendo un proyecto real:
- uso de variables y tipos
- condicionales y bucles
- funciones y módulos
- ficheros y logs
- JSON
- librerías del sistema (
os,subprocess,datetime)
El resultado será un script de auditoría básica de sistema que:
- lea una configuración desde un JSON
- obtenga información básica del sistema
- compruebe rutas/directorios
- registre la actividad en un log
- muestre un resumen por pantalla
No es un producto final ni perfecto: es una base realista desde la que seguir creciendo.
2. Visión general del proyecto
Nuestro proyecto final será un script llamado auditoria.py que:
- Leerá un archivo de configuración
config_auditoria.json - Recogerá información del sistema (usuario, directorio actual, comando externo sencillo)
- Verificará la existencia de ciertos directorios o archivos configurados
- Escribirá un log con los resultados
- Mostrará un resumen en pantalla
Este diseño imita muchos scripts que un sysadmin o devops puede utilizar en su día a día.
3. Preparación de archivos
Trabajaremos con estos dos archivos:
config_auditoria.json→ configuraciónauditoria.py→ script principal del proyecto
Opcionalmente, podrías separar la lógica en un módulo aparte (util_auditoria.py), pero en este mini proyecto lo tendremos todo en un solo script para simplificar.
4. Paso a paso del proyecto
4.1. Crear el archivo de configuración JSON
Crear el archivo:
nano config_auditoria.json
Contenido de ejemplo:
{
"rutas_a_comprobar": [
"/tmp",
"/var/log",
"/directorio_que_no_existe"
],
"log_file": "auditoria.log",
"comando_info": "whoami"
}
Notas:
- En Windows podrías usar rutas como
C:\\Windows,C:\\Temp, etc. - El comando
whoamifunciona en Linux, macOS y también en PowerShell.
4.2. Estructura básica del script
Crear:
nano auditoria.py
Empieza con los imports y la estructura general:
import os
import json
import datetime
import subprocess
4.3. Función para leer la configuración
En auditoria.py:
def leer_configuracion(ruta_config):
with open(ruta_config, "r") as f:
datos = json.load(f)
return datos
4.4. Función para escribir en el log
def escribir_log(ruta_log, mensaje):
fecha = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
linea = f"[{fecha}] {mensaje}\n"
with open(ruta_log, "a") as f:
f.write(linea)
4.5. Función para obtener información básica del sistema
def obtener_info_sistema(comando_info):
try:
salida = subprocess.check_output(comando_info.split()).decode().strip()
except Exception as e:
salida = f"Error al ejecutar comando '{comando_info}': {e}"
return salida
4.6. Función para comprobar rutas
def comprobar_rutas(lista_rutas):
resultados = []
for ruta in lista_rutas:
if os.path.exists(ruta):
estado = "OK"
else:
estado = "NO_ENCONTRADO"
resultados.append({"ruta": ruta, "estado": estado})
return resultados
4.7. Función principal
Ahora unimos todo en una main():
def main():
# 1) Leer configuración
config = leer_configuracion("config_auditoria.json")
rutas = config.get("rutas_a_comprobar", [])
ruta_log = config.get("log_file", "auditoria.log")
comando_info = config.get("comando_info", "whoami")
# 2) Obtener info básica del sistema
info_comando = obtener_info_sistema(comando_info)
# 3) Comprobar rutas
resultados_rutas = comprobar_rutas(rutas)
# 4) Escribir resultados en log
escribir_log(ruta_log, "Inicio de auditoría")
escribir_log(ruta_log, f"Comando de información: {comando_info}")
escribir_log(ruta_log, f"Resultado comando: {info_comando}")
for resultado in resultados_rutas:
linea = f"Ruta: {resultado['ruta']} - Estado: {resultado['estado']}"
escribir_log(ruta_log, linea)
escribir_log(ruta_log, "Fin de auditoría")
# 5) Mostrar resumen por pantalla
print("Auditoría básica completada.")
print("Comando de información:", comando_info)
print("Resultado comando:", info_comando)
print("\nResultados por ruta:")
for resultado in resultados_rutas:
print("-", resultado["ruta"], "=>", resultado["estado"])
print(f"\nLog guardado en: {ruta_log}")
4.8. Punto de entrada
Al final de auditoria.py añade:
if __name__ == "__main__":
main()
4.9. Ejecutar el proyecto
En el directorio donde tengas:
auditoria.pyconfig_auditoria.json
Ejecuta:
python3 auditoria.py
Comprueba:
- la salida por pantalla
- el contenido de
auditoria.log - el JSON de configuración si quieres cambiar rutas y repetir
5. Checklist del Día 7
- Has creado y usado un archivo JSON de configuración
- Has reutilizado funciones para separar lógica
- Has ejecutado un comando del sistema desde Python
- Has comprobado la existencia de varias rutas
- Has creado un log de auditoría
- Has mostrado un resumen por pantalla de forma clara
Si todo esto está hecho, has completado el proyecto final del mini curso.
6. Ideas de ampliación (para seguir después de los 7 días)
Algunas mejoras que podrías implementar cuando tengas tiempo:
- Añadir niveles de severidad en el log (INFO, WARNING, ERROR)
- Leer rutas desde un fichero de texto adicional
- Enviar el resultado por correo o a un endpoint HTTP
- Integrarlo con herramientas de monitorización
- Añadir comprobaciones de espacio en disco, uso de CPU, etc.
Este proyecto está pensado como base realista sobre la que seguir construyendo.
7. Cierre del mini curso
En estos 7 días has pasado de:
- instalar Python y ejecutar tu primer script
- usar variables, tipos y entrada/salida
- manejar condicionales y bucles
- definir funciones y módulos
- trabajar con ficheros, logs y JSON
- usar librerías del sistema para automatización
- construir un proyecto final que parece “de verdad”
No eres experto, pero sí tienes ya un kit de supervivencia profesional en Python para seguir creciendo.
A partir de aquí, puedes:
- rehacer este mismo proyecto desde cero sin mirar
- mejorarlo poco a poco
- crear tus propios scripts para tareas de tu día a día
⭐ Cierre del curso – Python en 7 días (Mini Tutorial de Emergencia)
Has completado los 7 días del Mini Tutorial de Emergencia de Python.
Has pasado por todos los fundamentos necesarios para sobrevivir, entender y crear tus primeros scripts útiles en un entorno real:
- creación de scripts
- lógica y estructuras
- funciones y módulos
- ficheros, rutas y logs
- JSON
- automatización del sistema
- proyecto final realista
Este no ha sido un curso largo ni teórico: ha sido práctico, directo y orientado a darte las habilidades mínimas imprescindibles para empezar a trabajar con Python mañana mismo.
A partir de aquí, tu progreso depende de:
- seguir practicando
- rehacer los ejercicios sin mirar
- ampliar el proyecto final
- enfrentarte a tareas reales en tu día a día
Recuerda:
no buscas ser experto en una semana… buscas tener la navaja suiza básica para arrancar y avanzar.
Gracias por llegar hasta aquí.
Nos vemos en el próximo Mini Tutorial de Emergencia.
