Skip to main content

check_ldap_response.sh

zuerst muss mit dem Parameter -g ein Diff-File erzeugt werden, dann können mit dem Parameter -f die Antworten der LDAP-Server mit dem File verglichen werden.

#!/bin/sh
 
# 2005 Oliver Voelker <code@magenbrot.net>
# checkt die LDAP-Server auf korrekte Antworten und Syncronisation
 
# usage:
# check_ldap_response.sh -H <host> [-p <port>] -b <base_dn> -D <binddn> -P <bindpassword> -f <checkfile> -v
#
# generate check-file:
# check_ldap_response.sh -H <host> [-p <port>] -b <base_dn> -D <binddn> -P <bindpassword> -g <checkfile> -v
 
LDAPSEARCH=`which ldapsearch`
 
PORT="389"
LDAPLOOKUP="uid=testuser"
TMP=/tmp/ldap.$$
DIFF=$(dirname $0)/ldap-checkfile
 
while getopts "H:p:b:D:P:g:f:v" flag
do
  #echo "$flag" $OPTIND $OPTARG
  case "$flag" in
    H) HOST=$OPTARG
       ;;
    p) PORT=$OPTARG
       ;;
    b) BASE=$OPTARG
       ;;
    D) BINDDN=$OPTARG
       ;;
    P) BINDPW=$OPTARG
       ;;
    g) DIFF=$(dirname $0)/ldap-$OPTARG
       echo "lege Vergleichsfile $DIFF an..."
       $LDAPSEARCH -h $HOST -p $PORT -b $BASE -D $BINDDN $LDAPLOOKUP -x -w $BINDPW > $DIFF
       exit 0
       ;;
    f) DIFF=$(dirname $0)/ldap-$OPTARG
       ;;
    v) $LDAPSEARCH -h $HOST -p $PORT -b $BASE -D $BINDDN $LDAPLOOKUP -x -w $BINDPW > $TMP
       diff -y $TMP $DIFF
       ;;
    *) echo "Ungueltiges Kommandozeilenargument"
       exit 1
       ;;
  esac
done
 
if [ -z $HOST ] || [ -z $BASE ] || [ -z $BINDDN ] || [ -z $BINDPW ]; then
  echo "Fehlendes Argument!"
  echo "usage:"
  echo "check_ldap_response.sh -H <host> [-p <port>] -b <base_dn> -D <binddn> -P <bindpassword> -f <checkfile>"
  echo "generate checkfile:"
  echo "check_ldap_response.sh -H <host> [-p <port>] -b <base_dn> -D <binddn> -P <bindpassword> -g <checkfile>"
  exit 2
fi
 
if [ -z $LDAPSEARCH ]; then
  echo "ldapsearch (openldap-clients) nicht gefunden, bitte installieren."
  exit 2
fi
 
if [ ! -r $DIFF ]; then
  echo "Vergleichsfile $DIFF existiert nicht oder kann nicht gelesen werden, bitte mit parameter -g aufrufen!"
  exit 2
fi
 
$LDAPSEARCH -h $HOST -p $PORT -b $BASE -D $BINDDN $LDAPLOOKUP -x -w $BINDPW > $TMP
 
diff $TMP $DIFF > /dev/null 2>&1
 
if [ $? != "0" ]; then
  echo "LDAP Server nicht synchron bzw. Antwort fehlerhaft"
  exit 2
fi
 
rm $TMP
echo "LDAP Server ist synchron"