#!/bin/ksh
# date_ps_ef.ksh
# Report on world.php or filename as argument 1

mimetype="Content-Type: text/html\\n"
emailfrom="rmetcalfe@rjmprogramming.com.au"
emailto="rmetcalfe15@gmail.com"
emailcc="rmetcalfe@rjmprogramming.com.au"
emailbcc=""
subjmiddle="Date ps-ef world.php Report"
lastcur=""
filen=""

attachrest="\\n<html><head><style> tr:nth-child(even) {background-color: #CCC !important;} tr:nth-child(odd) {background-color: #FFF !important;} </style></head><body><h1>First First ${subjmiddle} at `date`</h1><table style='border:5px dotted olive;width:70%;height:100%;margin: 5 5 5 5;font-family:Courier-New;'><tr><th>UID</th><th>PID</th><th>PPID</th><th>C</th><th>STIME</th><th>TTY</th><th>TIME</th><th>CMD</th></tr>`cat date_ps_ef_first.txt | sed '/^/s//<tr><td>/g' | sed 's/ \{1,\}/<\/td><td>/g' | awk '{ t=0; while (getline \$0) { if (t == 0) { print \"<tr style=background-color:#e7e7e7 !important;\" substr(\$0,3);  } else { print \$0; } t=1-t; } }' | sed '/$/s//<\/td><\/tr>/g'`</table></body></html>"
if [ ! -z "$1" ]; then
 while [ ! -z "$1" ]; do
  if [ "`echo \"${1}\" | tr -d '@'`" != "`echo \"${1}\"" ]; then
   if [ "`echo \"${emailto}\" | tr -d ' '`" == "`echo \"${emailto}\"" ]; then
     emailto="${1} "
   elif [ "`echo \"${emailcc}\" | tr -d ' '`" == "`echo \"${emailcc}\"" ]; then
     emailcc="${1} "
   else
     emailbcc="BCC: ${1}\\n"
   fi
  elif [ -f "${1}" ]; then
   if [ ! -z "${mimetype}" ]; then
    filen="${1}"
    mimetype=""
    shortf=""
    basechars="`base64 ${filen} | tr -d \"\\n\"`"
    i=0
    flast="`echo ${1} | tr '/' ' ' | sed '/\\\\/s// /g'`"
    for filebits in ${flast}; do
        shortf=$filebits
        ((i=i+1))
    done
    subjmiddle="$shortf"
    attachrest="Mime-Version: 1.0\\nContent-Type: multipart/mixed; boundary=\"19032019ABCDE\"\\n\\n--19032019ABCDE\\nContent-Type: text/plain; charset=\"iso-8859-1\"\\nContent-Transfer-Encoding: 8bit\\n\\nFirst ${subjmiddle} at `date`\\n\\n--19032019ABCDE\\nContent-Type: application/octet-stream; name=\"${shortf}\";\\nContent-Transfer-Encoding: base64\\nContent-Disposition: attachment;filename=\"${shortf}\"\\n\\n${basechars}\\n--19032019ABCDE--"
   fi
  fi
  shift
 done
 emailfrom="`echo ${emailfrom} | tr -d ' '`"
 emailto="`echo ${emailto} | tr -d ' '`"
 emailcc="`echo ${emailcc} | tr -d ' '`"
fi

while [ 0 -lt 1 ]; do
   if [ ! -z "${mimetype}" ]; then
     cur="`ps -ef | grep '/world.php' | grep -v 'grep ' | wc -l | tr -d ' '`"
   else 
     cur="`ls -l ${filen}`"
   fi
   echo "`date` $cur"
   if [ "$lastcur" != "$cur" ]; then
     if [ -z "$lastcur" ]; then
       if [ ! -z "${mimetype}" ]; then
         echo "`ps -ef | grep '/world.php' | grep -v 'grep '`" > date_ps_ef_first.txt
       fi
       echo -e "${mimetype}From: ${emailfrom}\nTo:  ${emailto}\nCC: ${emailcc}\n${emailbcc}Subject: First ${subjmiddle} at `date`\n${attachrest}" | sendmail -t -f ${emailto}
       if [ ! -z "${mimetype}" ]; then
         attachrest="\\n<html><body><h1>Changed ${subjmiddle} at `date`</h1><textarea rows=${cur} style='background-color:#e7e7e7;border:5px dotted olive;width:70%;height:100%;margin: 5 5 5 5;font-family:Courier-New;'>`diff date_ps_ef_first.txt date_ps_ef_next.txt`</textarea></body></html>"
       fi
     else 
       if [ ! -z "${mimetype}" ]; then
         echo "`ps -ef | grep '/world.php' | grep -v 'grep '`" > date_ps_ef_next.txt
       else
         basechars="`base64 ${filen} | tr -d \"\\n\"`"
         attachrest="Mime-Version: 1.0\\nContent-Type: multipart/mixed; boundary=\"19032019ABCDE\"\\n\\n--19032019ABCDE\\nContent-Type: text/plain; charset=\"iso-8859-1\"\\nContent-Transfer-Encoding: 8bit\\n\\nChanged ${subjmiddle} at `date`\\n\\n--19032019ABCDE\\nContent-Type: application/octet-stream; name=\"${shortf}\";\\nContent-Transfer-Encoding: base64\\nContent-Disposition: attachment;filename=\"${shortf}\"\\n\\n${basechars}\\n--19032019ABCDE--"
       fi
       echo -e "${mimetype}From: ${emailfrom}\nTo:  ${emailto}\nCC: ${emailcc}\n${emailbcc}Subject: Changed ${subjmiddle} at `date`\n${attachrest}" | sendmail -t -f ${emailto}
       if [ ! -z "${mimetype}" ]; then
         cat date_ps_ef_next.txt > date_ps_ef_first.txt
       fi
     fi
     lastcur="$cur"
   fi
   if [ ! -z "${mimetype}" ]; then
     if [ -z "${mimetype}" ]; then
       ps -ef | grep '/world.php' | grep -v 'grep '
     fi
   fi
   sleep 30 
done
exit

