rec=("${rec[@]:1}") # shift
for uid in ${rec[@]}; do
- rec=( $(slapcat_csv "(&(uid=$uid)(userPassword=*))" userPassword $attrs) )
+
+ slapcat -a "(&(uid=$uid)(userPassword=*))" | awk -F":: " "@include \"base64decode.awk\"; /^userPassword/{print base64decode(\$2)}" | while read -r pass; do
+ echo $group:$uid:$pass
+ done
+ done
+
+ done
+ '
+ return
+}
+
+_ldap_gup() {
+ local usage="Usage: ldap_gup [filter attrs ...]"
+ case "$*" in
+ -h|-help) echo $usage; return;;
+ esac
+ local filer=$1; shift; [ -n "$filter" ] && filter="($filter)"
+ local attrs=${*:-"uid"}; shift
+
+ eval '
+ local args
+ slapcat_csv "(&(objectClass=posixGroup)(memberUid=*)$filter)" cn memberUid | while read -r -a rec; do
+
+ group=${rec[0]}
+ rec=("${rec[@]:1}") # shift
+
+ for uid in ${rec[@]}; do
+ rec=( $(slapcat_csv "(&(uid=$uid)(userPassword=*)(!(uid=test)))" userPassword $attrs) )
pass=${rec[0]}
rec=("${rec[@]:1}") # shift
for field in ${rec[@]}; do
# Base64
B64[field] = 0
if (field ~ /:$/) {
+ #print "HELLO"field
sub(/:$/,"",field)
B64[field] = 1
}
if (field in h && h[field] != "") {
h[field] = h[field]""CONCAT""line
+ B64[field] = 0
} else {
h[field] = line
if (PFIELDS_OK == 0) filter = filter" "field