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>
This commit is contained in:
2026-03-23 19:10:59 +00:00
parent ea1c67b33f
commit fc5b3f3bdc
10 changed files with 278 additions and 21 deletions
+37
View File
@@ -0,0 +1,37 @@
#!/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"
+18
View File
@@ -0,0 +1,18 @@
#!/bin/bash
set -euo pipefail
# Met à jour la liste des paquets (silencieux)
apt-get update -qq
# Récupère la liste des paquets pouvant être mis à jour (simulation)
UPDATES=$(apt-get -s upgrade 2>/dev/null | grep -E '^Inst' | awk '{print $2 " " $3 " -> " $4}' || true)
if [[ -z "$UPDATES" ]]; then
MESSAGE="Aucune mise à jour disponible"
else
MESSAGE="Mises à jour disponibles :\
$UPDATES"
fi
# Envoie le résultat via MQTT
mosquitto_pub -h "$MQTT_BROKER" -t "$MQTT_REPLY_TOPIC" -m "$MESSAGE"