inotifywait (parte di inotify-tools ) è lo strumento giusto per raggiungere il tuo obiettivo, non importa che vengano creati più file contemporaneamente, li rileverà.
Ecco uno script di esempio:
#!/bin/sh
MONITORDIR="/path/to/the/dir/to/monitor/"
inotifywait -m -r -e create --format '%w%f' "${MONITORDIR}" | while read NEWFILE
do
echo "This is the body of your mail" | mailx -s "File ${NEWFILE} has been created" "yourmail@addresshere.tld"
done
inotifywait utilizzerà queste opzioni.
-m per monitorare la directory indefinitamente, se non si utilizza questa opzione, una volta che ha rilevato un nuovo file lo script termina.
-r monitorerà i file in modo ricorsivo (se ci sono molti dirs / file potrebbe richiedere del tempo per rilevare i nuovi file creati)
-e create è l'opzione per specificare l'evento da monitorare e nel tuo caso dovrebbe essere creato per occuparsi dei nuovi file
--format '% w% f' stamperà il file nel formato /complete/path/file.name
"$ {MONITORDIR}" è la variabile che contiene il percorso da monitorare che abbiamo definito in precedenza.
Quindi, nel caso in cui venga creato un nuovo file, inotifywait lo rileverà e stamperà l'output (/complete/path/file.name) sulla pipe e mentre assegnerà quell'output alla variabile NEWFILE .
All'interno del ciclo while vedrai un modo per inviare una mail al tuo indirizzo usando l' utility mailx che dovrebbe funzionare bene con il tuo MTA locale (nel tuo caso, Postfix).
Se vuoi monitorare diverse directory, inotifywait non lo consente ma hai due opzioni, crea uno script per ogni dir per monitorare o crea una funzione all'interno dello script, qualcosa del genere:
#!/bin/sh
MONITORDIR1="/path/to/the/dir/to/monitor1/"
MONITORDIR2="/path/to/the/dir/to/monitor2/"
MONITORDIRX="/path/to/the/dir/to/monitorx/"
monitor() {
inotifywait -m -r -e create --format "%f" "$1" | while read NEWFILE
do
echo "This is the body of your mail" | mailx -s "File ${NEWFILE} has been created" "yourmail@addresshere.tld"
done
}
monitor "$MONITORDIR1" &
monitor "$MONITORDIR2" &
monitor "$MONITORDIRX" &