freebsd-skq/etc/autofs/include_ldap
Edward Tomasz Napierala 3914ddf8a7 Bring in the new automounter, similar to what's provided in most other
UNIX systems, eg. MacOS X and Solaris.  It uses Sun-compatible map format,
has proper kernel support, and LDAP integration.

There are still a few outstanding problems; they will be fixed shortly.

Reviewed by:	allanjude@, emaste@, kib@, wblock@ (earlier versions)
Phabric:	D523
MFC after:	2 weeks
Relnotes:	yes
Sponsored by:	The FreeBSD Foundation
2014-08-17 09:44:42 +00:00

39 lines
945 B
Bash

#!/bin/sh
#
# $FreeBSD$
#
# Modify this to suit your needs. The "$1" is the map name, eg. "auto_master".
# To debug, simply run this script with map name as the only parameter. It's
# supposed to output map contents ("key location" pairs) to standard output.
SEARCHBASE="ou=$1,dc=example,dc=com"
ENTRY_ATTRIBUTE="cn"
VALUE_ATTRIBUTE="automountInformation"
/usr/local/bin/ldapsearch -LLL -x -o ldif-wrap=no -b "$SEARCHBASE" "$ENTRY_ATTRIBUTE" "$VALUE_ATTRIBUTE" | awk '
$1 == "'$ENTRY_ATTRIBUTE':" {
key = $2
}
$1 == "'$VALUE_ATTRIBUTE':" && key {
printf "%s%s", key, OFS
key = ""
for (i=2; i<NF; i++) {
printf "%s%s", $(i), OFS
}
printf "%s%s", $NF, ORS
}
# Double colon after attribute name means the value is in Base64.
$1 == "'$VALUE_ATTRIBUTE'::" && key {
printf "%s%s", key, OFS
key = ""
for (i=2; i<NF; i++) {
printf "%s%s", $(i), OFS
}
printf "%s", $NF | "b64decode -rp"
close("b64decode -rp")
printf "%s", ORS
}
'