Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


28/05/2025

Documentación de Búsqueda de Logs del Sistema con Script

Introducción

Este documento contiene un script en Bash diseñado para buscar archivos de log del sistema en una laptop con Linux. El script explora el directorio `/var/log` en busca de archivos con extensión `.log` y recopila la siguiente información para cada archivo:

  • Nombre del Archivo: La ruta completa del archivo de log.
  • Tamaño: El tamaño del archivo en formato legible (por ejemplo, KB, MB).
  • Última Modificación: La fecha y hora de la última modificación.
  • Crítico: Indica si el log es potencialmente crítico ("Sí" o "No"), basado en palabras clave como "error", "fail", "auth" o "syslog".

Los resultados se ordenan por tamaño de mayor a menor y se presentan en una tabla Org-mode. Los logs marcados como críticos deben revisarse para evaluar posibles problemas del sistema o eventos de seguridad.

Script en Bash

El siguiente script en Bash busca archivos de log, los ordena por tamaño y determina si son críticos. Se ha corregido para evitar errores de sintaxis y garantizar compatibilidad.

#!/bin/bash

# Definir el directorio de búsqueda de logs
LOG_DIR="/var/log"

# Verificar si el directorio existe
if [ ! -d "$LOG_DIR" ]; then
  echo "Error: El directorio $LOG_DIR no existe."
  exit 1
fi

# Imprimir encabezado de la tabla Org-mode
echo "| Nombre del Archivo | Tamaño | Última Modificación | Crítico |"
echo "|--------------------|--------|---------------------|---------|"

# Buscar archivos .log, recopilar información, ordenar por tamaño
find "$LOG_DIR" -type f -name "*.log" -exec /bin/bash -c '
  for file; do
    # Obtener tamaño en formato legible
    size=$(ls -lh "$file" | awk "{print \$5}")
    # Obtener tamaño en bytes para ordenar
    size_bytes=$(ls -l "$file" | awk "{print \$5}")
    # Obtener fecha de última modificación
    last_modified=$(stat -c %y "$file" | cut -d. -f1)
    # Determinar si el log es crítico usando grep
    if echo "$file" | grep -E -i "error|fail|auth|syslog" >/dev/null; then
      critical="Sí"
    else
      critical="No"
    fi
    # Imprimir fila con tamaño en bytes para ordenar
    echo "$size_bytes|$file|$size|$last_modified|$critical"
  done
' bash {} + | sort -t"|" -k1 -nr | while IFS="|" read -r size_bytes file size last_modified critical; do
  # Imprimir fila en formato Org-mode, sin el tamaño en bytes
  echo "| $file | $size | $last_modified | $critical |"
done

Para ejecutar el script:

  1. Guarde el script como `buscarlogs.sh`.
  2. Haga el script ejecutable: `chmod +x buscarlogs.sh`.
  3. Ejecute el script con: `sudo bash ./buscarlogs.sh > resultados.org`.

Resultados

La siguiente tabla contiene los resultados del script, ordenados por tamaño de mayor a menor. Los logs marcados como "Crítico: Sí" deben revisarse para una evaluación posterior.

| Nombre del Archivo | Tamaño | Última Modificación | Crítico |
|--------------------|--------|---------------------|---------|

Notas

  • Ubicación: El script busca en `/var/log`. Modifique `LOGDIR` en el script para incluir otros directorios si es necesario.
  • Permisos: Los archivos de log en `/var/log` a menudo requieren permisos de superusuario. Ejecute el script con `sudo bash ./buscarlogs.sh` para evitar errores de permisos.
  • Logs Críticos: Los logs marcados como "Crítico: Sí" contienen palabras clave como "error", "fail", "auth" o "syslog". Revise estos archivos para identificar problemas del sistema o eventos de seguridad.
  • Actualización de Resultados: Copie la salida del script (`resultados.org`) en la sección Resultados para actualizar la tabla.
  • Corrección de Errores: Se ha reemplazado la sintaxis Bash específica (`=~`) con `grep` para evitar errores de compatibilidad con `sh`.
  • Ejecución con Bash: Use `sudo bash ./buscarlogs.sh` en lugar de `sudo ./buscarlogs.sh` si persisten problemas de sintaxis, para garantizar que se use Bash.
Categoría: logs sistema linux bash

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

📊 Estadísticas Visit counter For Websites