Email if the file exists/disappears

This is just a script that I wrote to email me when a file shows up or when that same file disappears. I figure it might be handy to do the same thing somewhere else someday so you or I can just copy and paste as the need arises.

#!/bin/bash

startingdir="/home/yourhomedir"

cd $startingdir

thisfilenameflagfile="/tmp/$(basename $0).thisfilename_exists"

logfile="/tmp/$(basename $0).log"

echo -e "LOGFILE: $logfile\nthisfilename Flag File: $thisfilenameflagfile"

function rotatelog()

{

 touch $logfile

 #how old is the current log file? maybe it's time to start a new one. Are there any old ones to delete?

 if [ $(wc -l $logfile|awk '{print $1}') -gt 2000 ];then

  if [ -f "${logfile}.9.gz" ];then rm -v "${logfile}.9.gz";fi

  ct=9;while [ $ct -gt 1 ];do

   let ct--

   if [ -f "${logfile}.${ct}.gz" ];then

    mv -v "${logfile}.${ct}.gz" "${logfile}.$(( $ct + 1 )).gz"

   fi

  done

 fi

}

rotatelog

function sendemailthisfileremoved()

{

 echo "$(date) $0 - emailed pickup was done" | tee -a $logfile

cat <<EOF | /usr/sbin/sendmail -t

To: myemail@mydomain.com

Subject: Alert: File thisfilename removed

From: do-not-reply@mydomain.com

The file thisfilename has been removed.

Parent: $PPID $(ps -ocommand $PPID|grep -v 'COMMAND')

Email by: $0 at $(date) user:$(whoami) on $(hostname)

EOF

}

function sendemailthisfilenameready()

{

 echo "$(date) $0 - emailed file is ready for pickup" | tee -a $logfile

cat <<EOF | /usr/sbin/sendmail -t

To: myemail@mydomain.com

Subject: Alert: File thisfilename is present

From: do-not-reply@mydomain.com

The file thisfilename is present.

Parent: $PPID $(ps -ocommand $PPID|grep -v 'COMMAND')

Email by: $0 at $(date) user:$(whoami) on $(hostname)

EOF

}

if [ ! -f "thisfilename" ] && [ -f "$thisfilenameflagfile" ];then

 echo "File absent but flag exists, removing flag and emailing."

 sendemailthisfileremoved

 /bin/rm -vf "$thisfilenameflagfile"

else

 echo "File absent despite flag? Nope."

fi

if [ -f "thisfilename" ] && [ ! -f "$thisfilenameflagfile" ];then

 echo "File exists but flag absent, adding flag and emailing."

 touch "$thisfilenameflagfile"

 sendemailthisfilenameready

else

 echo "File exists but missing flag? Nope."

fi