Bash script to check uptime

Shell script designed to run every minute, simply checks if the uptime is less than it was when the script last ran. If it is less, it emails a bunch of stuff to the admin. Each time it runs it records the current uptime in a separate file.

Python version available here.

#!/usr/bin/env bash
#
# uptime-check.sh
# Check uptime and mail if uptime is less than it was when script last ran
# http://linux-101.org
#

HOSTNAME=$(hostname)
HDRFROM="From: Uptime Script <devnull@example.com>"
HDRTO="To: Sysadmin <alerts@example.com>"
HDRSUBJ="Subject: $HOSTNAME has been rebooted"
ENVELTO="alerts@example.com"  #Match above HDRTO

PWD=$(pwd)
DATE=$(date '+%Y%m%d%H%M%S')
DATAFILE=$PWD/uptime-check.data
UPTIMENEW=$(gawk -F . '{ print $1 }' /proc/uptime)
UPTIMEOLD=$(gawk -F : '{ print $2 }' $DATAFILE)

if [ "$UPTIMENEW" -lt $UPTIMEOLD ] ; then
    TMPFILE=/var/tmp/uptime.tmp
    touch $TMPFILE
    echo $HDRFROM >> $TMPFILE
    echo $HDRTO >> $TMPFILE
    echo $HDRSUBJ >> $TMPFILE
    echo "uptime | ps aux | netstat -nap" >> $TMPFILE
    echo " " >> $TMPFILE
    $(uptime >> $TMPFILE)
    echo "
           " >> $TMPFILE
    $(ps aux >> $TMPFILE)
    echo "
           " >> $TMPFILE
    $(netstat -nap >> $TMPFILE)
    echo "
           " >> $TMPFILE
    echo "." >> $TMPFILE
    echo "
           " >> $TMPFILE
    cat $TMPFILE | sendmail "$ENVELTO"
    rm -f $TMPFILE
    echo "$DATE:$UPTIMENEW" > $DATAFILE
else
    echo "$DATE:$UPTIMENEW" > $DATAFILE
fi
Micro Banner Micro Banner Micro Banner Micro Banner Micro Banner Micro Banner