proxmox-node-config/check-arp-integrity.sh

22 lines
914 B
Bash

#!/bin/bash
IP_LOCAL="192.168.1.100"
MAC_ESPERADA="e8:6a:64:8e:7e:2a"
INTERFAZ_SALIDA="vmbr0"
LOG_FILE="/var/log/arp-monitor.log"
REPO_FIX_SCRIPT="$(dirname "$0")/apply.sh"
RESPUESTA=$(arping -c 3 -I "$INTERFAZ_SALIDA" "$IP_LOCAL" 2>/dev/null | grep reply | head -n1)
MAC_RESPUESTA=$(echo "$RESPUESTA" | awk -F" " '{print $5}' | tr '[:upper:]' '[:lower:]')
FECHA=$(date '+%Y-%m-%d %H:%M:%S')
if [[ -z "$MAC_RESPUESTA" ]]; then
echo "$FECHA - ERROR: No se recibió respuesta ARP de $IP_LOCAL" >> "$LOG_FILE"
elif [[ "$MAC_RESPUESTA" != "$MAC_ESPERADA" ]]; then
echo "$FECHA - ALERTA: MAC inesperada para $IP_LOCAL. Esperada: $MAC_ESPERADA, Recibida: $MAC_RESPUESTA" >> "$LOG_FILE"
echo "$FECHA - Reaplicando configuración arp_filter" >> "$LOG_FILE"
bash "$REPO_FIX_SCRIPT" >> "$LOG_FILE" 2>&1
else
echo "$FECHA - OK: ARP verificado correctamente para $IP_LOCAL (MAC $MAC_RESPUESTA)" >> "$LOG_FILE"
fi