fc5b3f3bdc
- system_prompt: section scripts bash (commandes interdites, mosquitto_pub, bonnes pratiques) - script.py: nettoyage guillemets échappés à la sauvegarde - network.py: nouvelle action scan (nmap/arp-scan/arp fallback), auto-détection subnet - cron.py: _get_current_crontab() évite d'écrire "(aucune sortie)" dans le crontab - README créé Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
38 lines
1.0 KiB
Bash
Executable File
38 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
||
set -euo pipefail
|
||
|
||
# Sous‑réseau à surveiller
|
||
SUBNET="192.168.7.0/24"
|
||
|
||
# Fichier de cache contenant la liste des hôtes vus lors du dernier scan
|
||
CACHE="/tmp/monitor_disconnect_cache.txt"
|
||
|
||
# Fonction de scan : ping‑scan avec nmap, on ne garde que les adresses IP actives
|
||
scan_hosts() {
|
||
nmap -sn "$SUBNET" -oG - | awk '/Up/{print $2}'
|
||
}
|
||
|
||
# Première exécution → créer le cache et quitter
|
||
if [[ ! -f "$CACHE" ]]; then
|
||
scan_hosts > "$CACHE"
|
||
exit 0
|
||
fi
|
||
|
||
# Scan actuel
|
||
CURRENT="$(mktemp)"
|
||
scan_hosts > "$CURRENT"
|
||
|
||
# Déterminer les hôtes qui ont disparu depuis le dernier scan
|
||
MISSING=$(comm -23 <(sort "$CACHE") <(sort "$CURRENT")) || true
|
||
|
||
# Si des hôtes sont manquants, envoyer une alerte XMPP via MQTT (le broker relayera vers Nexus)
|
||
if [[ -n "$MISSING" ]]; then
|
||
while IFS= read -r ip; do
|
||
MSG="ALERTE : machine $ip déconnectée du réseau $SUBNET"
|
||
mosquitto_pub -h "$MQTT_BROKER" -t "agents/nexus/inbox" -m "$MSG"
|
||
done <<< "$MISSING"
|
||
fi
|
||
|
||
# Mettre à jour le cache pour le prochain cycle
|
||
mv "$CURRENT" "$CACHE"
|