Ha, I just noticed that I used the wrong email in my script.
So, if anyone is wondering with the email address changed... it was user
error.
Sorry about that.

-> Jake


On Fri, Aug 23, 2013 at 6:57 AM, Jake Vath <jake.vath at gmail.com> wrote:

> I modified the script a bit.
> I added *set -e* to the script and removed the pipe to *sendmail
> *
> All of the output is being directed to *stdout*.
>
>
> #!/bin/bash
> #
> # usage: script DIR email-to-addr
> set -e
>
> DIR=$1
> EMAILTO=$2
>
> /usr/bin/inotifywait --recursive \
>
>                            --monitor \
>                            --quiet \
>                            --exclude '.*\.tmp' \
>                            --event close_write \
>                            --format '%f' \
>                            /home/jake/tmp/$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
> done
>
> I executed the script like this:
>     jake at server:~$ ./mailme.sh dirToWatch jake.vath at gmail.com
>
> Only get one "email" per file that I created.
> Granted the email is not sent through *sendmail*.
>
> After running this:
>    jake at server:~$ touch tmp ./dirToWatch/tmp
>
> I get a "email" like this in my shell:
> *To: jvath at erdc.k12.mn.us*
> *From: MONITOR ROBOT <DO-NOT-REPLY at somewhere.com>*
> *Subject: Alert - dirToWatch*
>
> *A new file has been detected in dirToWatch*
>
>
> *The New File is named:*
>
> *tmp*
>
> Do you think that it would be something with your mail server or *sendmail
> *?
>
> Mike, when I created some test files $FILE always changed.
>
> Actually, I'm a little confused by the *2>&1 | /usr/bin/sendmail -t* at
> the end of your do-while loop.
> I know that *2>&1* is going to redirect *stderr* to *stdout*, but that
> redirection only takes place IFF there *is* and error, correct?
> If that is correct and the normal output is going through the pipe to *
> sendmail* just like it looks like.
>
> On a slightly related note, I read the man page for *sendmail* and came
> across this:
>
> *Notes*
>
> *sendmail often gets blamed for many problems that are actually the
> result of other problems, such as overly permissive modes on directories.
> For this reason, sendmail checks the modes on system directories and files
> to determine if they can be trusted. Although these checks can be turned
> off and your system security reduced by setting the DontBlameSendmail
> option, the permission problems should be fixed. For more information, see:
> *
>
> *http://www.sendmail.org/tips/DontBlameSendmail.html*
>
> I thought it was comical, as I'm sure they do get a lot bug reports that
> are not *really* bugs in *sendmail*.
>
> -> Jake
>
>
> On Fri, Aug 23, 2013 at 3:25 AM, Mike Miller <mbmiller+l at gmail.com> wrote:
>
>> Are the multiple email messages identical, or does $FILE change?
>>
>> Mike
>>
>>
>>
>> On Thu, 22 Aug 2013, Rick Engebretson wrote:
>>
>>  I'm not sure either. But it seems the pipe to while isn't a pipe from
>>> one executable command output to another executable command input.
>>>
>>>
>>> Mike Miller wrote:
>>>
>>>> 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>
>>>>>> <ht**tp://mailman.mn-linux.org/**mailman/listinfo/tclug-list<http://mailman.mn-linux.org/mailman/listinfo/tclug-list>
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>>  ______________________________**_________________
>>>> 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>
>>>>
>>>>  ______________________________**_________________
>>> 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>
>>>
>>>  ______________________________**_________________
>> 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>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20130823/51338af3/attachment-0001.html>