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"