#!/bin/sh # # Monitor file $1 for changes # Send an alert email to $2 if file $1 changes # usage: filewatcher {file_to_watch} {your_email_address} # if [ -z "$2" ]; then echo "Usage: filewatcher {file_to_watch} {your_email_address}" exit 1 fi #if a inotifywait for this file is already running if [ $(ps aux | grep inotifywait | grep -c "$1" ) -gt '0' ]; then echo "A process monitoring the file $1 is already running: $(ps aux | grep inotifywait | grep "$1" )"; exit 1; fi #if inotifywait exists type -P inotifywait &>/dev/null || { echo "Error: This script requires inotifywait(http://wiki.github.com/rvoicilas/inotify-tools/) .... apt-get install inotify-tools ... " >&2; exit 1; } #if the file exists # if [ -f $1 ]; then echo "Monitoring file $1 for changes - sending alerts to $2" while inotifywait -e modify -e attrib -e move -e delete $1 -o /opt/filewatcher/audit.log; do sleep 1 changes="$(tail -1 $1)" #changes="$(cat /opt/filewatcher/audit.log)" echo "The following change occurred in the file $1 : $changes" | mail -s "Change in $1" $2 rm /opt/filewatcher/audit.log touch /opt/filewatcher/audit.log done else echo "Error: File $1 not found"