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

index 08e40bd94c082ddc9306a6a45be2986db2bd5fca..f35184b02c350bda31f10236d551d0386f9accd6 100644 (file)
@@ -1,5 +1,25 @@
 which slapcat > /dev/null || return
 
+ldap_next_number() {
+  local attr=${1:-uidNumber}
+  local max=$(
+    slapcat -o ldif-wrap=999 -a "(&($attr=*))" | grep "^$attr:" | sed 's/^[^:]\+: //' | sort -n | tail -1
+  )
+  [ -z "$max" ] && max=0
+  echo $(($max+1))
+}
+
+ldap_user_password() {
+  local ifs=$'\t'
+  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
+  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; }}'
+}
+
 ldap_new_password() {
   local pass=$(for i in 0 1 3 4;do slappasswd -gn; done; echo)
   cat <<EOF