diff --git a/check_svcs b/check_svcs new file mode 100755 index 0000000000000000000000000000000000000000..74a48ce38f57d5d9fc248a05a4ea2d65d1b80dc1 --- /dev/null +++ b/check_svcs @@ -0,0 +1,63 @@ +#!/bin/ksh + +PATH=/usr/bin +export PATH + +VERBOSE=0 +SERVER="" + +SVCS="/usr/bin/svcs" +RSH=ssh + +RC=0 +SL="" + +TMP="/tmp/check_svcs.$$" +trap "/bin/rm -f ${TMP}" 0 1 2 15 + +while test -n "$1"; do + case "$1" in + -v) VERBOSE=1 + ;; + + -H) SERVER="$2" + shift + ;; + + *) echo "$0: Invalid option: $1" + exit 1 + ;; + esac + shift +done + +if [ "$SERVER" = "" -o "$SERVER" = "localhost" -o "$SERVER" = "`/bin/uname -n`" ]; then + CMD="${SVCS} -x" +else + CMD="$RSH -n ${SERVER} ${SVCS} -x" +fi + +${CMD} 2>/dev/null >${TMP} +RC=$? +if [ $RC != 0 ]; then + echo "UNKNOWN - ${CMD} failed with code $RC" + exit -1 +fi + +RC=0 + +nawk '($1 ~ /svc:*/) { print $1 }' <$TMP | while read svc; do + RC=1 + SL="${SL} ${svc}" +done + +case "$RC" in + 0) + echo "OK - All services running" + exit 0 + ;; + 1) + echo "WARNING - Services not running:${SL}" + exit 1 + ;; +esac