sandbox
Sandbox page

#!/bin/bash

#Starting - JBAS015899
#Started Success - JBAS015874
#Started Failed - JBAS015875

function version() {
	echo "esc (esc startup checker) 0.1
Copyright (C) 2014 nomike <nomike@nomike.com>
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by nomike <nomike@nomike.com>"
}

function usage() {
	echo "Usage: $0 [options]... [FILE]...
Check if last JBoss start was successfull.

  -h, --help                  display this help text and exit
  -s, --success               display log lines for successfull startups too
      --version               display version info and exit

Exit stati for multiple log files are multiplied with a bitwise AND.

Exit status:
 0   if JBoss start was successfull or no logfile specified on command line,
 1   if JBoss start was unsuccessfull,
 2   if JBoss startup complete message could not be found (could indicate
 that JBoss is still starting up)
 4   if JBoss startup message could not be found
 8   if at least one file could not be accessed.
 128 if another error has occured
   
   Report esc bugs to nomike@nomike.com
   Home page: <http://www.nomike.com/>
"	  	
}

function checkStack() {
	# sanity check for file
	if ! [ -f "${1}" -a -r "${1}" ] ; then
		echo "File could not be read" >&2
		return 128
	fi
	
	declare -i startline
	
	# check for last "JBboss is starting" message
	startline="$( grep -n 'JBAS015899' ${1} | tail -n 1 | cut -d ":" -f1)"
	
	if ! [ "${startline}" -eq "${startline}" ] ; then
		echo "JBoss start line not found in \"${1}\"" >&2
		return 4
	fi
	
	# check for successfull start
	error="$(tail -n +${startline} ${1} | grep -m 1 'JBAS015875')"
	success="$(tail -n +${startline} ${1} | grep -m 1 'JBAS015874')"
	
	if [ -n "${error}" ] ; then
		# Logfile contained a "startup unsuccessfull" message
		echo "${error}"
		return 1
	elif [ -n "${success}" ] ; then
		# logfile contained a "startup successfull" message
		if [ ${display_success} -eq 0 ]  ; then
			echo "${success}"
		fi
		return 0
	else
		echo "JBoss startup-complete message not found" >&2
		return 2
	fi
}


display_success=1
args=`getopt -n "$0" -o hs --long help,success,version -- "$@"` 1>&2
if [ $? -ne 0 ]; then
	echo "Parameter error"
        usage
        exit 128
fi
eval set -- "$args"
while true ; do
        case "$1" in
                -h|--help) usage ; exit 0 ; shift ;;
                -s|--success) display_success=0 ; shift ;;
                --version) version ; exit 0 ; shift ;;
                --) shift ; break ;;
                *) echo "Invalid parameter" ; exit 128 ;;
        esac
done


result=0
for file in "${@}" ; do
	checkStack "${file}"
	result=$(( ${result} | ${?} ))
done

exit ${result}