Script en BASH que analiza un archivo LOG y busca direcciones IP en el REGISTRO, cuando las detecta, debe guardar las Direcciones IP en una MATRIZ Asociativa (Solo funciona en versiones de BASH sobre 4). Además, debe grabar un registro con la fecha y hora en que aparece las direcciones IP.
Al finalizar el SCRIPT, debe mostrar un resumen con las DIRECCIONES IP y la cantidad de veces que aparecieron en el LOG.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/bash # Nombre del archivo de registro archivo_log="tu_archivo_de_registro.log" # Inicializa la matriz asociativa declare -A conteo_ips # Lee cada línea del archivo de registro while read linea; do # Busca la dirección IP y la fecha/hora en la línea usando una expresión regular if [[ "$linea" =~ ^([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}).*([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}) ]]; then fecha_hora="${BASH_REMATCH[1]}" ip="${BASH_REMATCH[2]}" # Incrementa el conteo para la dirección IP en la matriz ((conteo_ips["$ip"]++)) # Guarda la fecha y hora en un archivo separado echo "$fecha_hora - $ip" >> fechas_ips.log fi done < "$archivo_log" # Imprime el resumen echo "Resumen de direcciones IP:" for ip in "${!conteo_ips[@]}"; do echo "$ip: ${conteo_ips[$ip]}" done |
Explicación del SCRIPT :
- Expresión regular:
- Variables:
- Registro de fechas y horas:
Consideraciones:
- Asegúrate de que el formato de la fecha y hora en tu archivo de registro coincida con el patrón que hemos definido.
- Puedes cambiar el nombre del archivo de registro y el archivo de salida según tus necesidades.