# 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. ```shell #!/bin/sh # 2005 Oliver Voelker # checkt die LDAP-Server auf korrekte Antworten und Syncronisation # usage: # check_ldap_response.sh -H [-p ] -b -D -P -f -v # # generate check-file: # check_ldap_response.sh -H [-p ] -b -D -P -g -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 [-p ] -b -D -P -f " echo "generate checkfile:" echo "check_ldap_response.sh -H [-p ] -b -D -P -g " 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" ```