This script can be started on server startup like this:/path/to/file_change_mail_alert.sh /var/log/something.log your.email@domain.ro

Or put in in the crontab – once a day (it will exit if it detects that another instance of “itself” is already running)0 6 * * * /path/to/file_change_mail_alert.sh /var/log/something.log your.email@domain.ro

3 thoughts on “monitor file and send alert mail on change/modify”

I have taken the idea of your script and rewrote it some so that:
0. it works with any Bourne shell compatible shell [orig will only work on BASH]
1. It takes an optional third arg – the dir to the commit file, for diffing purposes
2. use FILENAME and MAILTO instead of $1 and $2

I couldn;t find your mail addr so pasting it here in the hope that it will be useful.

thanks,

#!/bin/sh
# Send an alert email to $2 if file $1 changes
# usage: file_change_mail_alert.sh /file/to/probe/for changes your.name@domain.com
# This script is based on the one here:
# http://blog.brasov.cubus.ro/2010/05/monitor-file-and-send-alert-mail-on-changemodify/
# Jess made it more generic and Bourne shell compatible.

if [ -z "$2" ]; then
echo "Usage: $0 "
exit 1
fi
FILENAME=$1
MAILTO=$2
if [ -d "$3" ];then
PATH_TO_COMMITTED_FILE=$3
fi
#if a inotifywait for this file is already running
if ps aux | grep inotifywait | grep -c "$FILENAME" ;then
echo "A process monitoring the file $1 is already running: `ps aux | grep inotifywait | grep "$1"`";
# it would be more reasonable if we exited with something other than 0 but when we do, crond omits an alert by mail, even though it is not necessarily an error to have another inotifywait running..
exit 0;
fi