#!/bin/sh
#
# Univention Nagios Plugin
#  check_univention_nscd: check if nscd is bound to its socket.
#
# SPDX-FileCopyrightText: 2017-2025 Univention GmbH
# SPDX-License-Identifier: AGPL-3.0-only

VERSION="1.00"
PROGNAME="${0##*/}"

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

state () {
    local STATE="$1"
    case "$STATE" in
        "$STATE_OK") STATE_STRING="OK" ;;
        "$STATE_WARNING") STATE_STRING="WARNING" ;;
        "$STATE_CRITICAL") STATE_STRING="CRITICAL" ;;
        *) STATE_STRING="UNKNOWN" ;;
    esac
    shift
    echo "${STATE_STRING}: $*"
    exit "$STATE"
}

print_revision() {
    echo "$PROGNAME: version $VERSION"
}

print_usage() {
    echo "Usage: $PROGNAME --help"
    echo "Usage: $PROGNAME --version"
    echo "Usage: $PROGNAME"
}

print_help() {
    print_revision
    echo ""
    print_usage
}

while [ $# -ge 1 ]
do
    case "$1" in
        --help|-h)
            print_help
            exit "$STATE_OK"
            ;;
        --version|-V)
            print_revision
            exit "$STATE_OK"
            ;;
    esac
    shift
done

nscd_socket="/var/run/nscd/socket"

[ -S $nscd_socket ] ||
    state "$STATE_CRITICAL" "no nscd socket found! nscd not running?"

timeout 3 nscd -g >/dev/null 2>/dev/null ||
    state "$STATE_CRITICAL" "nscd not responding!"

state "$STATE_OK" "nscd is running."
