check_slapd_schema/check_slapd_schema

95 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# Nagios plugin to check slapd schema
#
# Author : Benjamin Renard <brenard@easter-eggs.com>
# Date : Wed, 12 Jun 2019 13:15:33 +0200
# Source : http://gogs.zionetrix.net/check_slapd_schema
#
SUDO_USER=""
SLAPSCHEMA=slapschema
DB_ID=""
DB_BASEDN=""
DEBUG=0
function debug() {
if [ $DEBUG -eq 1 ]
then
>&2 echo -e "[DEBUG] $1"
fi
}
function usage() {
cat << EOF
Usage : $0 [-d] [-h] [options]
-u Sudo as specified user to run slapschema
-s Path to slapschema (Default : auto-detected)
-n Slapd database ID (Default : auto-detected)
-b Slapd database base DN (Default : auto-detected)
-d Debug mode
-h Show this message
EOF
}
while getopts "hu:s:n:b:d" OPTION
do
case $OPTION in
u)
SUDO_USER=$OPTARG
;;
s)
SLAPSCHEMA=$OPTARG
;;
n)
DB_ID=$OPTARG
;;
b)
DB_BASEDN=$OPTARG
;;
d)
DEBUG=1
;;
h)
usage
exit 0
;;
*)
echo "Unkown option '$OPTION'"
usage
exit 1
esac
done
CMD="$SLAPSCHEMA"
[ -n "$DB_ID" ] && CMD="$CMD -n $DB_ID"
[ -n "$DB_BASEDN" ] && CMD="$CMD -b $DB_BASEDN"
debug "slapschema command = '$CMD'"
if [ -n "$SUDO_USER" ]
then
debug "run slapdschema command as $SUDO_USER"
ERRORS=$( sudo -u $SUDO_USER $CMD 2>&1 > /dev/null )
EXITCODE=$?
else
ERRORS=$( $CMD 2>&1 > /dev/null )
EXITCODE=$?
fi
debug "Errors :\n$ERRORS"
debug "Exit code : $EXITCODE"
if [ $EXITCODE -ne 0 ]
then
echo "UNKNOWN - slapschema exit with $EXITCODE"
exit 3
elif [ -z "$ERRORS" ]
then
echo "OK - no error detected in slapd schema"
exit 0
else
count=$( echo -e "$ERRORS"|wc -l )
echo "WARNING - $count error(s) detected in slapd schema"
echo -e "$ERRORS"
exit 1
fi