Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
#!/bin/sh
# Kenneth Finnegan, 2010
# kennethfinnegan.blogspot.com
#
# status.sh - CGI script to print current Chumby health and statistics
#
# Install in web server cgi-bin/ folder
# Schedule with cron to prevent stale cache:
# 0 * * * * /.../cgi-bin/status.sh > /dev/null
#
# Revision History:
# 2010 11 28: Initial implementation
# 2010 11 29: Implement status caching to prevent excessive CPU usage
# 2010 12 03: Fix ifconfig status to automatically switch ifs and
# to not print lo status.
# Moved cache to /tmp/
# 2010 12 05: Fixed header spacing to match updated ACC_TOTAL output from
# logrotate.sh
# Set file location variables
STUBDIR="/mnt/storage/lighty/cgi-bin"
CACHEDIR="/tmp"
LOGDIR="/mnt/storage/logs"
STATCACHE="$CACHEDIR/cgi.cache.status"
ACC_TODAY="$LOGDIR/lighttpd.access.log"
ACC_TOTAL="$LOGDIR/lighttpd.access.log.total"
ANALYTICS="$STUBDIR/analytics.html.part"
# Calculate seconds since epoch for cache and current time
if [ -f $STATCACHE ]; then
CACHEAGE=`stat -c %Y $STATCACHE`
else
touch $STATCACHE
CACHEAGE=0
fi
NOW=`date +%s`
# Print cache to current request
echo "Content-type: text/html"
echo ""
echo "<html><head><title>Chumby Status</title></head>"
echo "<body>"
cat $ANALYTICS
echo "<pre>"
echo " ---- Current Chumby Status ----</pre>"
echo '<a href="http://kennethfinnegan.blogspot.com/2010/11/chumby-status-cgi-script.html"><pre>How this web page works</pre></a><br><pre>'
cat $STATCACHE
echo "</pre>"
echo "<pre>"
cat /etc/motd
echo "</pre>"
echo "</body>"
# Generate new status cache if older than 20 seconds
if [ `expr $NOW - $CACHEAGE` -gt 20 ]
then
cat > $STATCACHE << EOF
`awk '{print "Load avg (1/5/15 min): "$1" "$2" "$3}' /proc/loadavg`
HTTP requests processed since midnight: `wc -l < $ACC_TODAY`
`echo -e "DATE\t UNIQUIE\tTOTAL"`
`tail -n 7 $ACC_TOTAL`
`df -m | grep -v -e none -e tmpfs`
`free | head -n 2`
`ifconfig | grep -e Link -e inet -e bytes | grep -A 3 -e eth0 -e wlan0`
Report generated at: `date "+%F %k:%M:%S %Z"`
EOF
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment