#!/bin/bash
#
# __copy1__
# __copy2__
#
# probe ad ldap host
#
# returns 0 if ldap server reachable and responding
# returns 1 if not
#
CMD=${CMD:-"$(basename $0)"}
DEBUG=${DEBUG:-"false"}
TIMEOUT=${TIMEOUT:-"5"}

set -e -u

cleanup()
{
	rm -f $tmpfile
}

usage()
{
	[ $# != 0 ] && echo -e "\n$*\n"
	echo "usage: $CMD [hostname]" >&2
	exit 127
}

# (MAIN)

tmpfile=$(mktemp /tmp/$CMD-XXXXXXX)
host=

trap 'echo -e "\n*INTR*"; exit 255' 1 2 3
trap 'echo -e "\nunknown error $? at $LINENO"' ERR
trap 'cleanup' EXIT


[ $# -gt 1 ] && usage "no parms?"
[ $# == 1 ] && {
	host="-h $1"
	shift
	ping -c 1 -w 5 $host "$@" || {
		echo " host $host unreachable"
		exit 1
	}
}


echo " contacting ldap server $host ..."
sh -c "ldapsearch $host -x dummy=dummy && echo \$? true >$tmpfile"  &
pid=$!

while [ $TIMEOUT -gt 0 ]
do
	echo " $TIMEOUT wait ..."
	sleep 1
	TIMEOUT=$(echo "${TIMEOUT}-1" | bc)
done
echo " killing $pid"
kill $pid || :
sleep 1
kill -9 $pid 2>/dev/null || :

[ -s $tmpfile ] && exit 0

exit 1
