Files
agent_hal/scripts/monitor_disconnect.sh
T
sylvain fc5b3f3bdc feat: amélioration scripts bash, scan réseau, fix cron, README
- 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>
2026-03-23 19:10:59 +00:00

38 lines
1.0 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -euo pipefail
# Sousré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 : pingscan 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"