58 lines
2.2 KiB
Bash
58 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# --- CONFIGURAZIONE TELEGRAM ---
|
|
# 👇👇 INSERISCI I TUOI DATI VERI QUI 👇👇
|
|
BOT_TOKEN="8155587974:AAF9OekvBpixtk8ZH6KoIc0L8edbhdXt7A4"
|
|
CHAT_ID="64463169"
|
|
# 👆👆 FINE MODIFICHE 👆👆
|
|
|
|
# --- FILE DI STATO ---
|
|
KNOWN_MACS_FILE="/etc/pihole/known_macs.txt"
|
|
|
|
# Dati ricevuti da dnsmasq
|
|
ACTION=$1
|
|
MAC=$2
|
|
IP=$3
|
|
HOSTNAME=$4
|
|
|
|
# Se l'hostname è vuoto, mettiamo un placeholder
|
|
if [ -z "$HOSTNAME" ]; then HOSTNAME="[Nessun Hostname]"; fi
|
|
|
|
# Ci interessano solo le azioni di assegnazione IP ('add' o 'old')
|
|
if [[ "$ACTION" == "add" || "$ACTION" == "old" ]]; then
|
|
|
|
# Assicura che il file dei MAC esista e sia scrivibile
|
|
if [ ! -f "$KNOWN_MACS_FILE" ]; then
|
|
touch "$KNOWN_MACS_FILE" && chmod 666 "$KNOWN_MACS_FILE"
|
|
fi
|
|
|
|
# Cerca il MAC address nel file dei conosciuti
|
|
if ! grep -q "$MAC" "$KNOWN_MACS_FILE"; then
|
|
# === NUOVO DISPOSITIVO RILEVATO! ===
|
|
|
|
# --- NOVITÀ: Lookup Vendor ---
|
|
# Usiamo un'API esterna gratuita per trovare il produttore.
|
|
# Impostiamo un timeout stretto (3s connessione, 5s totale) per non bloccare il DHCP se l'API è lenta.
|
|
VENDOR=$(curl -s --connect-timeout 3 --max-time 5 "https://api.macvendors.com/$MAC")
|
|
|
|
# Se l'API fallisce, è vuota o restituisce errore, mettiamo un default.
|
|
# (Nota: alcune API restituiscono "Not Found" come testo puro se non trovano il vendor)
|
|
if [ -z "$VENDOR" ] || [[ "${VENDOR,,}" == *"not found"* ]] || [[ "${VENDOR,,}" == *"error"* ]]; then
|
|
VENDOR="[Sconosciuto / API Timeout]"
|
|
fi
|
|
|
|
# 1. Invia notifica Telegram (silenziosa)
|
|
# Aggiunta la riga 🏭 **Vendor:**
|
|
MSG="🚨 **NUOVO DISPOSITIVO IN RETE!**%0A%0A💻 **Host:** $HOSTNAME%0A📟 **MAC:** \`$MAC\`%0A🏭 **Vendor:** $VENDOR%0A🌐 **IP:** $IP"
|
|
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" -d chat_id="$CHAT_ID" -d text="$MSG" -d parse_mode="Markdown" > /dev/null 2>&1
|
|
|
|
# 2. Aggiungi il MAC alla lista dei conosciuti
|
|
# Salviamo anche il vendor nel file di testo per comodità futura
|
|
{
|
|
flock -x 200
|
|
echo "$MAC # Aggiunto il $(date) - Vendor: $VENDOR - Host: $HOSTNAME" >> "$KNOWN_MACS_FILE"
|
|
} 200>"$KNOWN_MACS_FILE.lock"
|
|
|
|
fi
|
|
fi
|