From: Nicolas Boisselier Date: Sun, 26 Nov 2017 05:04:37 +0000 (+0000) Subject: etc/profile.d/ldap.sh X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=96de7314f6aaea1c15adf88e7a42bea8ef058004;p=nb.git etc/profile.d/ldap.sh --- diff --git a/etc/profile.d/ldap.sh b/etc/profile.d/ldap.sh index c3e76d85..c6705399 100644 --- a/etc/profile.d/ldap.sh +++ b/etc/profile.d/ldap.sh @@ -11,10 +11,23 @@ ldap_next_number() { ldap_group_user_password() { local ifs=$'\t' + slapcat -o ldif-wrap=999 -a '(&(objectClass=posixAccount)(userPassword=*))' | grep -E "^(uid|userPassword):" | sed -e 's/"/\\"/g' -e "s/: /$ifs/g" | while IFS="$ifs" read -r -a row; do + echo ">${row[0]} ${row[1]}" + case ${row[0]} in + uid) uid=${row[1]}; continue ;; + userPassword) userPassword="${row[1]}" ;; + userPassword) userPassword=$(echo "${row[1]}" | base64 -d) ;; + esac + echo "$uid $userPassword" + done + return slapcat -o ldif-wrap=999 -a '(&(objectClass=posixGroup)(memberUid=*))' | grep -E "^(cn|memberUid):" | sed -e 's/"/\\"/g' -e "s/: /$ifs/g" | while IFS="$ifs" read -r -a row; do - echo "${row[0]}" - echo "${row[1]}" - echo + case ${row[0]} in + cn) cn=${row[1]}; continue ;; + memberUid) memberUid=${row[1]} ;; + esac + echo "$cn $memberUid" + #echo "${row[0]}"; echo "${row[1]}"; echo done # | sed -E -e 's/"/\\"/g' -e 's/^([^:]+): (.*)$/k="\1"; v="\2"/' | while read #| sed -E -e 's/"/\\"/g' -e 's/: (.*)$/="\1";/' | awk '{if (/;$/) {printf $0; } else {print $0; }}' @@ -61,6 +74,31 @@ ldap_cn() { slapcat -a 'cn=*' $@ | grep ^dn | sed 's/dn: //' } +ldapsearch_csv() { + local filter="$1"; shift + slapcat -a "$filter" -o ldif-wrap=no | awk -F': ' '\ +/^$/ { \ +if (!count) { \ + line = ""; \ + for (i in fields) { sub(/:$/,"",i); line = line"\t"i; } \ + sub(/^\t/,"",line); \ + print line; \ +} \ + count++ ;\ + line = ""; \ + for (i in fields) { \ + sub(/^.*?: /,"",h[i]); + if (i ~ /:$/) { cmd="echo "h[i]" | base64 -d"; cmd | getline x; close(cmd); h[i] = x; }; \ + line = line"\t"h[i]; + }; \ + sub(/^\t/,"",line); \ + print line; \ + next; \ +} \ +{ h[$1] = $0; fields[$1]++; } \ +' +} + # NB 14.11.17 ldap_objectclasses() { # NB 14.11.17 slapcat -o ldif-wrap=999 -b cn=config -a '(&(objectClass=olcSchemaConfig))' | awk '\ # NB 14.11.17 /^olcObjectClasses:.*MUST/ {\