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:

  1. Leerá un archivo de configuración config_auditoria.json
  2. Recogerá información del sistema (usuario, directorio actual, comando externo sencillo)
  3. Verificará la existencia de ciertos directorios o archivos configurados
  4. Escribirá un log con los resultados
  5. 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ón
  • auditoria.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 whoami funciona 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.py
  • config_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

[índice curso Vi/Vim]


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.

Ìndice Curso PythonAnterior Día 6

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies