From: Nicolas Boisselier Date: Tue, 28 Nov 2017 02:38:25 +0000 (+0000) Subject: lib/awk/ldap2csv.awk X-Git-Url: https://git.nbdom.net/?a=commitdiff_plain;h=e4956b0b1b34ef5d7dd9e2cf39ba48d07fe7327a;p=nb.git lib/awk/ldap2csv.awk --- diff --git a/etc/profile.d/ldap.sh b/etc/profile.d/ldap.sh index c6705399..46e2272b 100644 --- a/etc/profile.d/ldap.sh +++ b/etc/profile.d/ldap.sh @@ -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 index 00000000..6867af20 --- /dev/null +++ b/lib/awk/ldap2csv.awk @@ -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]++ +} +