🔒 Registro cerrado · Apertura oficial próximamente · Acceso exclusivo para alumnos activos
Iniciar SesiónLeer un archivo JSON de eventos con Python
5 tareas · 40 min · Principiante
Martes 11 de mayo. Textiles del Carare, una empresa inventada de tejidos, exportó diez eventos de sus puestos a un archivo JSON, y el turno quiere saber qué contiene sin abrirlo con los ojos línea por línea. Aquí aprendes cómo se ve un JSON, cómo lo lee un guion corto de Python y qué hace ese guion cuando a un evento le falta un campo. Todo es lectura: los guiones corrieron antes, fuera de aquí, y en la consola ves los datos, el código y lo que imprimieron.
Objetivo de la sala
Martes 11 de mayo. Textiles del Carare, una empresa inventada de tejidos, exportó diez eventos de sus puestos a un archivo JSON, y el turno quiere saber qué contiene sin abrirlo con los ojos línea por línea. Aquí aprendes cómo se ve un JSON, cómo lo lee un guion corto de Python y qué hace ese guion cuando a un evento le falta un campo. Todo es lectura: los guiones corrieron antes, fuera de aquí, y en la consola ves los datos, el código y lo que imprimieron.JSON es un formato de texto para datos con estructura. Un objeto va entre llaves y trae pares "clave": valor; una lista va entre corchetes; los valores pueden ser cadenas, números, true, false, null, otros objetos u otras listas. Casi toda herramienta de seguridad que exporta eventos, alertas o inventarios sabe escribirlo.
En Python, json.load(f) lee el archivo abierto y devuelve objetos nativos del lenguaje: un objeto JSON pasa a ser un diccionario (dict), una lista pasa a ser una lista (list), y los textos y números pasan a str e int o float. Después, el campo de un evento se pide por su nombre, como en ev["host"].
Abre la consola y mira cómo empieza eventos.json y cómo termina.
Responde para continuar
eventos.json empieza con un corchete y cada línea es un objeto entre llaves. Tras `eventos = json.load(f)`, ¿qué es `eventos`?
Ver pista de ayuda
Fíjate en el primer y el último carácter del archivo, y en lo que va entre llaves.
Cada evento trae su identificador (id), la hora en UTC (ts), el equipo (host), la cuenta (usuario), el tipo de evento y una severidad con cuatro niveles: baja, media, alta y critica, escrita sin tilde. Como el archivo tiene un evento por línea, buscar un valor con grep equivale a filtrar la lista.
Ver todo con cat eventos.json es razonable con diez eventos; con diez mil ya no, y por eso se escriben guiones. El principio es el mismo: pedir a la lista los elementos cuyo campo vale lo que buscas.
Responde para continuar
Escribe el id del único evento de severidad critica.
Ver pista de ayuda
Prueba `grep critica eventos.json` y mira el comienzo de la línea.
En Python, ev["campo"] falla con un KeyError si ese evento no trae el campo. El mensaje de error dice la línea del guion y el nombre de la clave, pero no cuál de los eventos del archivo la causó. Para saberlo se mira lo que el guion alcanzó a imprimir antes de caer: el último evento impreso salió bien, y el que falló es el que viene justo después en el archivo.
La primera versión del guion imprime una línea por evento. Lee su salida guardada, hasta donde llega, y compárala con el archivo.
Responde para continuar
Escribe el id del evento que hizo fallar a la primera versión del guion.
Ver pista de ayuda
Mira el último evento que alcanzó a imprimir `lee_eventos.py` y busca en `eventos.json` el que viene a continuación.
Un campo ausente no es un archivo roto: es un dato, porque dice que ese tipo de evento no lleva ese campo. Hay tres maneras de seguir leyendo: pedir el campo con ev.get("campo"), que devuelve None si falta en lugar de fallar; envolver todo en un try que descarta lo que falla; o editar el archivo. Solo la primera es honesta con la evidencia, y solo si el guion además deja constancia de lo que no encontró.
La segunda versión del guion usa .get. Lee su código y su salida guardada y fíjate en las dos últimas líneas.
Responde para continuar
La segunda versión no se detiene al llegar a un evento sin el campo. ¿Qué hace bien?
Ver pista de ayuda
Una buena lectura no altera el archivo ni oculta lo que no pudo leer.
Un valor puede ser a su vez un objeto. Aquí origen trae dos campos propios, ip y sitio, y en Python se llega a ellos encadenando nombres: ev["origen"]["ip"]. Es la forma típica de los registros de nube y de EDR, donde casi todo está anidado.
Responde para continuar
Escribe la dirección de origen de los eventos de la cuenta agarzon.
Ver pista de ayuda
Prueba `grep agarzon eventos.json` y lee el campo `ip` dentro de `origen`.
Whoami-Labs Pro
Whoami-Labs Pro utiliza cookies
Utilizamos cookies y almacenamiento local para el funcionamiento del sitio, seguridad de sesión y, si lo autorizas, analítica y marketing. Puedes aceptar, rechazar o personalizar. Política de Privacidad
Preferencias
Configuraciones de cookies
Elige qué categorías permitir. Las esenciales siempre están activas. Consulta la Política de Privacidad.
Esenciales
Siempre activas · sesión, CSRF, tema y esta preferencia
Necesarias para iniciar sesión, proteger formularios (CSRF) y recordar tu elección de cookies y tema. Sin ellas la plataforma no funciona de forma segura.
Analíticos
Hoy no activos en la plataforma; listos para cuando se conecten
Nos ayudan a entender uso de cursos y páginas. Si los activas, se usarán cuando conectemos analítica; hasta entonces no se carga ningún tracker.
Marketing
Hoy no activos; campañas futuras solo con tu permiso
Comunicaciones o campañas. No activos hoy en la plataforma; quedarán listos si los conectamos y solo si los permites.