]> git.nbdom.net Git - nb.git/commitdiff
etc/profile.d/ldap.sh
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Sun, 26 Nov 2017 05:04:37 +0000 (05:04 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Sun, 26 Nov 2017 05:04:37 +0000 (05:04 +0000)
etc/profile.d/ldap.sh

index c3e76d85b959e9a7cd8bc0993009b1a14f7988a5..c6705399836f1c4a1c070577b094fff3d22f5e18 100644 (file)
@@ -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/ {\