From f39433591a6d9a4295607668a48d05bdee4cc3e1 Mon Sep 17 00:00:00 2001 From: Nicolas Boisselier Date: Wed, 29 Nov 2017 12:47:27 +0000 Subject: [PATCH] lib/awk/ldap2csv.awk --- etc/profile.d/ldap.sh | 6 +++++- lib/awk/ldap2csv.awk | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 4 deletions(-) mode change 100644 => 100755 lib/awk/ldap2csv.awk diff --git a/etc/profile.d/ldap.sh b/etc/profile.d/ldap.sh index 410ea623..a5870ed9 100644 --- a/etc/profile.d/ldap.sh +++ b/etc/profile.d/ldap.sh @@ -75,7 +75,11 @@ ldap_cn() { } ldapsearch_csv() { - ldapsearch -LLLx -o ldif-wrap=no $@ | awk -f $NB_ROOT/lib/awk/ldap2csv.awk + [ "$1" == "--noheader" -o "$1" == "-nh" ] && shift && ldapsearch_csv $@ | tail -n +2 && return + [ "$1" == "--human" -o "$1" == "-h" ] && shift && ldapsearch_csv $@ | csv2human && return + #local filter="$1"; shift + ldapsearch -LLLx -o ldif-wrap=no $@ | awk -f $NB_ROOT/lib/awk/ldap2csv.awk -- $@ + #slapcat -a "$filter" -o ldif-wrap=no | awk -f $NB_ROOT/lib/awk/ldap2csv.awk } diff --git a/lib/awk/ldap2csv.awk b/lib/awk/ldap2csv.awk old mode 100644 new mode 100755 index 90cfe73f..f2fba550 --- a/lib/awk/ldap2csv.awk +++ b/lib/awk/ldap2csv.awk @@ -1,9 +1,10 @@ +#!/usr/bin/awk -f + BEGIN { FS = ": " CONCAT = ";" - #h[x] = "" FOUND = 0 - #delete h + PRINT_HEAD = 0 } /^$/ { @@ -12,7 +13,14 @@ BEGIN { next } - if (!count) { + if (PFIELDS_OK == 1) { + delete fields + for (i in PFIELDS) { + fields[i] = PFIELDS[i] + } + } + + if (PRINT_HEAD == 1 && !count) { line = "" for (i in fields) { sub(/:$/,"",i) @@ -64,3 +72,23 @@ BEGIN { fields[field]++ } +BEGIN { + split("",PFIELDS,"") + PFIELDS_OK = 0 + + filter = "" + for (i = 1; i < ARGC; i++) { + if (ARGV[i] ~ /^[a-zA-Z0-9]+$/) filter = filter""ARGV[i]" " + delete ARGV[i] + } + + if (filter != "") { + sub(/ *$/,"",filter) + PFIELDS_OK = 1 + } + + split(filter,values," ") + for (i in values) { + PFIELDS[values[i]]++ + } +} -- 2.47.3