L. J. Jaeckel
CMPSC 210 — Linux System Administration
April 22, 2011

Listing of shell script: run-weblog.sh

Lists the last (most recent) 20 lines of the Apache2 web access log and error log, writing output to stdout, along with some general header and footer lines (including a line with date and time).

When run without any arguments, output is simple plain text, suitable for viewing in a command prompt environment.
When run with -h argument, output is a complete HTML page suitable for viewing with a web browser. The page includes a meta tag to auto-refresh itself every 30 seconds.

Intended to be run (with the -h option) regularly (and fairly frequently) via cron, with the resulting web page going directly into a web site directory.

Click here to view the web page thus generated by the most recent run of this script (if it is being run on the machine you are viewing, that is).


     1	#!/bin/bash
     2	# run-weblog.sh
     3	#
     4	# L. J. Jaeckel
     5	# CMPSC-210 -- Linux Administration
     6	# April 22, 2011
     7	#
     8	# Lists the final (most recent) 20 lines of the apache2 web access
     9	# and error logs.  Output is written (along with a header line giving
    10	# date and time) to stdout.
    11	#
    12	# If run with -h option, additional output is written to
    13	# create a complete HTML page.
    14	#
    15	# Intended to be run regularly (and fairly frequently) via cron.
    16	
    17	
    18	if [ "$1" = "-h" ] ; then
    19	    DO_HTML="yes"
    20	    HTDASH='—'
    21	    BEGINH1='<h1><center>'
    22	    ENDH1='</center></h1>'
    23	    BEGINH3='<h3>'
    24	    ENDH3='</h3>'
    25	else
    26	    HTDASH='--'
    27	fi
    28	
    29	NLINES=20
    30	REFRESH=30
    31	WEB_ACC_LOG=/var/log/apache2/access.log
    32	WEB_ERR_LOG=/var/log/apache2/error.log
    33	MY_DATE=`date '+%T %A %B %-d, %Y'`
    34	
    35	if [ $DO_HTML ] ; then
    36	    echo '<html>'
    37	    echo '  <head>'
    38	    echo "    <title>Recent Web Access Log messages $HTDASH $MY_DATE</title>"
    39	    echo "    <meta http-equiv=\"refresh\" content=\"$REFRESH\" />"
    40	    echo '  </head>'
    41	    echo '<body>'
    42	fi
    43	
    44	echo ''
    45	echo "${BEGINH1}Recent Web Access Log messages $HTDASH (last $NLINES lines)$ENDH1"
    46	
    47	if [ $DO_HTML ] ; then
    48	    echo "<center>Refreshing every $REFRESH seconds.</center>"
    49	    echo '<center>'
    50	    echo 'Click <a href="run-weblog-sh-list.html">here</a>'
    51	    echo 'to see the source listing of the shell script that'
    52	    echo 'creates this page, which should be run periodically'
    53	    echo 'as a cron task.<br />'
    54	    echo 'For a PHP version of this, which updates more'
    55	    echo 'regularly and is fancier too, take a look at'
    56	    echo '<a href="run-weblog.php">run-weblog.php</a>'
    57	    echo '</center>'
    58	else
    59	    echo ''
    60	fi
    61	
    62	echo "${BEGINH3}${MY_DATE} $HTDASH Web Access messages:${ENDH3}"
    63	echo ''
    64	if [ $DO_HTML ] ; then
    65	    echo '<pre>'
    66	fi
    67	
    68	tail -$NLINES $WEB_ACC_LOG
    69	
    70	if [ $DO_HTML ] ; then
    71	    echo '</pre>'
    72	    echo '<hr />'
    73	    echo '</body>'
    74	    echo '</html>'
    75	else
    76	    echo ''
    77	fi
    78	
    79	echo "${BEGINH3}${MY_DATE} $HTDASH Web Error messages:${ENDH3}"
    80	echo ''
    81	if [ $DO_HTML ] ; then
    82	    echo '<pre>'
    83	fi
    84	
    85	tail -$NLINES $WEB_ERR_LOG
    86	
    87	if [ $DO_HTML ] ; then
    88	    echo '</pre>'
    89	    echo '<hr />'
    90	    echo '</body>'
    91	    echo '</html>'
    92	else
    93	    echo ''
    94	    echo ====================================================================== 
    95	fi
    96	
    97	
    98	# End of this script --------------------------------------------------
    99