Isn't the question here why it would send multiple messages when the event is close_write? I'm not clear on how "while read FILE" works, but that is the part that makes me suspicious. Mike On Wed, 21 Aug 2013, Jake Vath wrote: > Do you want to stick with Bash for the solution? > I've done something similar using Perl, so I bet I could modify it to do > something like this. > The Perl script uses *Inotify2*, so it's fairly portable. > > If you want to stick with Bash, maybe you could assemble your email into a > few different strings, such as to, from, subject, and body. > You could only send an email with all the previous information and the body > of the emails concatenated together. > That way you could build the emails based on some events and then send one > email on a specific event. > Think of it as a sentinel-controlled event loop. > > -> Jake > > > On Tue, Aug 20, 2013 at 11:57 PM, B-o-B De Mars <mr.chew.baka at gmail.com>wrote: > >> I need to monitor various directories contained in one base directory, and >> notify certain users by email when a file has been added or changed in >> their monitored directory. I wrote a script using inotifywait, and when an >> event is triggered it fires of an email to the user with the location & the >> new file name. >> >> The script is working, but can generate many emails for one event (saving >> a large file for example). >> >> I have tried many of the different --event types available in inotifywait >> to see if I could get it down to one notification. No luck yet. Here is >> the basic outline of the script. Any thoughts on how I might be able to >> get this to only send one email per file would be greatly appreciated. >> >> #!/bin/bash >> # >> # usage: script DIR email-to-addr >> >> DIR=$1 >> EMAILTO=$2 >> >> inotifywait --recursive --monitor --quiet --exclude '.*\.tmp' \ >> --event close_write --format '%f' \ >> /var/www/htdocs/contracts/**contracts/$DIR | while read FILE ; >> do >> { >> echo "To: $EMAILTO" >> echo "From: MONITOR ROBOT <DO-NOT-REPLY at somewhere.com>" >> echo "Subject: Alert - $DIR" >> echo " " >> echo "A new file has been detected in $DIR" >> echo "" >> echo "The New File is named:" >> echo " " >> echo $FILE >> } 2>&1 | /usr/bin/sendmail -t >> done >> >> Thanks! >> >> Mr. B-o-B >> ______________________________**_________________ >> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota >> tclug-list at mn-linux.org >> http://mailman.mn-linux.org/**mailman/listinfo/tclug-list<http://mailman.mn-linux.org/mailman/listinfo/tclug-list> >> >