Salta al contenuto principale

GNU Direvent 5.5

Inviato da tuxsa il
gnu

Direvent è un daemon leggero e potente del progetto GNU che monitora directory per eventi del filesystem (creazione, cancellazione, modifica di file) e lancia programmi esterni in risposta. Perfetto per automatizzare reazioni immediate a cambiamenti in file di configurazione, log o cartelle critiche – tutto in puro Software Libero.

Novità della 5.5 (rilasciata a giugno 2026):

  • Tutti i subprocessi vengono terminati correttamente prima dell’uscita del daemon.
  • Nuova direttiva di configurazione shutdown-timeout per controllare il comportamento durante lo spegnimento.
  • Miglioramenti generali di stabilità e pulizia.

Configurazione base (file direvent.conf)

Ecco un esempio semplice:

# Monitora /etc per cambiamenti
watcher /etc {
   event create modify delete;
   command "/usr/local/bin/backup-config.sh $file";
}

# Logga accessi a una cartella
watcher /var/log {
   event modify;
   command "echo 'Modificato: $file' >> /var/log/direvent.log";
}

Poi avvii con: direvent -c direvent.conf

Esempi pratici reali

  1. Backup automatico di file di configurazione Ogni volta che modifichi qualcosa in /etc (es. nginx.conf, fstab), parte uno script che fa commit Git o copia su backup esterno. Ottimo per server!
  2. Sincronizzazione o deploy

watcher /home/user/progetto {
   event modify;
   command "rsync -av /home/user/progetto/ user@server:/deploy/";
}

  1. Modifichi un file → deploy automatico (con nowait per non bloccare).
  2. Notifiche o alert di sicurezza Monitora cartelle sensibili (/root, chiavi SSH) e invia email/Signal o riavvia servizi se cambiano file inattesi.
  3. Elaborazione batch su nuovi file In una cartella di upload: nuovi file PDF → conversione automatica con pdftotext o compressione.

Vantaggi rispetto a inotify/watchdog: configurazione dichiarativa, supporto ricorsivo, gestione eventi composti e portabilità tra Linux, BSD, ecc.

In Debian:

Debian 13 include già pacchetti GNU eccellenti, e Direvent è perfetto per automazioni leggere e libere. Installazione su Debian 13:

sudo apt update
sudo apt install direvent

(Se non fosse ancora nei repo stabili, puoi compilare dalla source GNU – è semplice e consigliato per la versione 5.5 fresca.)

Configurazione di esempio per Debian

Crea /etc/direvent.conf:

# Esempio pratico: backup automatico config di sistema
watcher /etc {
   event create modify delete;
   command "/usr/local/bin/direvent-backup.sh $file";
   shell yes;          # espande variabili con la shell
}

# Ricorsivo su una cartella progetti
watcher /home/$USER/progetti recursive {
   event modify;
   command "echo 'Cambiato $file - $(date)' >> /var/log/direvent.log";
}

# Shutdown graceful
shutdown-timeout 10;

Script di esempio /usr/local/bin/direvent-backup.sh

#!/bin/bash
FILE="$1"
BACKUP_DIR="/var/backups/direvent/$(date +%Y-%m-%d)"
mkdir -p "$BACKUP_DIR"
cp -a "$FILE" "$BACKUP_DIR/$(basename $FILE).$(date +%H%M%S)"
echo "Backup di $FILE completato" | systemd-cat -t direvent

Rendilo eseguibile: chmod +x /usr/local/bin/direvent-backup.sh

Avvio come servizio systemd

Crea /etc/systemd/system/direvent.service:

[Unit]
Description=GNU Direvent - Directory Event Monitor
After=network.target

[Service]
ExecStart=/usr/bin/direvent -f -c /etc/direvent.conf
Restart=always
User=root

[Install]
WantedBy=multi-user.target

Poi:

sudo systemctl daemon-reload
sudo systemctl enable --now direvent
sudo systemctl status direvent

Fatto! Ora Debian 13 reagisce automaticamente ai cambiamenti nei file. Puoi espandere con logrotate, notifiche via mail o integrazione con cron.