90 lines
2.9 KiB
Bash
Executable file
90 lines
2.9 KiB
Bash
Executable file
#!/bin/sh
|
|
################################################################################
|
|
#
|
|
# CHECK_SAP plugin for Nagios
|
|
#
|
|
# Originally Written by Karel Salavec (karel.salavec@ct.cz)
|
|
#
|
|
# Last Modified: 26 May 2003 by Tom De Blende (tom.deblende@village.uunet.be)
|
|
#
|
|
# Version 1.1 (Tom De Blende)
|
|
# - Added output to feed to Nagios instead of just an exit code.
|
|
# - Changed info on where to get the SAP client tools for Linux.
|
|
#
|
|
# Version 1.0 (Karel Salavec)
|
|
#
|
|
# Command line: check_sap.sh <typ_of_check> <param1> <param2> [<param3>]
|
|
#
|
|
# Description:
|
|
# This plugin will attempt to open an SAP connection with the message
|
|
# server or application server.
|
|
# It need the sapinfo program installed on your server (see Notes).
|
|
#
|
|
# Notes:
|
|
# - This plugin requires that the sapinfo program is installed.
|
|
# - Sapinfo is part of a client package that can be found
|
|
# at ftp://ftp.sap.com/pub/linuxlab/contrib/.
|
|
#
|
|
#
|
|
# Parameters:
|
|
# $1 - type of checking - valid values: "ms" = message server
|
|
# "as" = application server
|
|
# $2 - SAP server identification - can be IP address, DNS name or SAP
|
|
# connect string (for example: /H/saprouter/S/sapdp01/H/sapserv3)
|
|
# $3 - for $1="ms" - SAP system name (for example: DEV, TST, ... )
|
|
# for $1="as" - SAP system number - note: central instance have sysnr=00
|
|
# $4 - valid only for $1="ms" - logon group name - default: PUBLIC
|
|
#
|
|
# Example of command definitions for nagios:
|
|
#
|
|
# command[check_sap_ms]=/usr/local/nagios/libexec/check_sap ms $HOSTADDRESS$ $ARG1$ $ARG2$
|
|
# command[check_sap_as]=/usr/local/nagios/libexec/check_sap as $HOSTADDRESS$ $ARG1$
|
|
# command[check_sap_ex]=/usr/local/nagios/libexec/check_sap as $ARG1$ $ARG2$
|
|
# (for ARG1 see SAP OOS1 transaction)
|
|
#
|
|
##############################################################################
|
|
|
|
sapinfocmd='/usr/sap/rfcsdk/bin/sapinfo'
|
|
grepcmd=`which grep`
|
|
wccmd=`which wc`
|
|
cutcmd=`which cut`
|
|
awkcmd=`which awk`
|
|
|
|
##############################################################################
|
|
|
|
if [ $# -lt 3 ]; then
|
|
echo "Usage: $0 <typ_of_check> <param1> <param2> [<param3>]"
|
|
exit 2
|
|
fi
|
|
|
|
case "$1"
|
|
in
|
|
ms)
|
|
if [ $4 ]
|
|
then
|
|
params="r3name=$3 mshost=$2 group=$4"
|
|
else
|
|
params="r3name=$3 mshost=$2"
|
|
fi
|
|
;;
|
|
as)
|
|
params="ashost=$2 sysnr=$3"
|
|
;;
|
|
*)
|
|
echo "The first parameter must be ms (message server) or as (application server)!"
|
|
exit 2
|
|
;;
|
|
esac
|
|
|
|
output="$($sapinfocmd $params)"
|
|
error="$(echo "$output" | $grepcmd ERROR | $wccmd -l)"
|
|
if [ "$error" -gt "0" ]; then
|
|
output="$(echo "$output" | $grepcmd Key | $cutcmd -dy -f2)"
|
|
echo "CRITICAL - SAP server not ready: " $output.
|
|
exit 2
|
|
else
|
|
output="$(echo "$output" | $grepcmd Destination | $awkcmd '{ print $2 }')"
|
|
echo "OK - SAP server $output available."
|
|
exit 0
|
|
fi
|