#!/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