]> git.nbdom.net Git - nb.git/commitdiff
lib/awk/ldap2csv.awk
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 28 Nov 2017 02:38:25 +0000 (02:38 +0000)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 28 Nov 2017 02:38:25 +0000 (02:38 +0000)
etc/profile.d/ldap.sh
lib/awk/ldap2csv.awk [new file with mode: 0644]

index c6705399836f1c4a1c070577b094fff3d22f5e18..46e2272b004df7e4e279371724593755fbfffff8 100644 (file)
@@ -76,27 +76,8 @@ ldap_cn() {
 
 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]++; } \
-'
+  #slapcat -a "$filter" -o ldif-wrap=no | awk -F': ' '\
+  ldapsearch -LLLx "$filter" $@ -o ldif-wrap=no | awk -f lib/awk/ldap2csv.awk
 }
 
 # NB 14.11.17 ldap_objectclasses() {
diff --git a/lib/awk/ldap2csv.awk b/lib/awk/ldap2csv.awk
new file mode 100644 (file)
index 0000000..6867af2
--- /dev/null
@@ -0,0 +1,49 @@
+BEGIN {
+  FS = ": "
+}
+
+/^$/ {
+
+  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
+  delete h
+  next
+}
+
+!/^(objectClass_): / {
+
+  sub(/[ \r\n]+$/,"",$0)
+
+  if (h[$1]) {
+  print ">"h[$1]
+    h[$1] = h[$1]"|"$0
+  } else {
+    h[$1] = $0
+  }
+
+  fields[$1]++
+}
+