Solução de bash .. partes ...
Comece por extrair o conteúdo do anúncio:
ldapsearch -s -h <ADHOST> -P <ADPORT> -D <USERDN WITH RIGHTS TO READ AD> -W -E pr-1000/noprompt -b <BASEDN FOR SEARCH> > ad_extract_tmp.ldif
O "-W" força um prompt interativo para a senha do usuário. Você não quer isso no histórico de comando. Se você está combinando isso em um script, então você pode usar o "-w" e proteger o acesso à senha.
Agora que o conteúdo foi extraído em um arquivo de texto, podemos usar o processamento de texto para converter em CSV ou qualquer outro formato desejado.
Arquivos ldif são agrupados, então o primeiro passo seria desdobrá-lo
awk ' BEGIN (RS="\n\n"; FS="\n "} {for (i=1,i<=NF;i++) printf $i; printf "\n\n"}' ad_extract_tmp.ldif > ad_extract_tmp.ldif.unwrapped
Aqui, redefinimos o registro para consistir em um bloco de texto com dois finais de linha e um campo para consistir em um bloco de texto com apenas uma linha terminando e um espaço. Em seguida, processamos cada linha como um campo, juntando as que são ldif wrapped ("\ n") em um único campo. Agora que temos um ldif desembrulhado, o passo final é converter de ldif para csv.
awk ' Begin {
record = "false";
print "\x22uid\x22,\x22dn\x22";
}
{ if ( record = "true") {
if ( $0 ~ /~sAMAccountName./) {
uid = $0;
sub (/^.*: /,"",uid);
}
if ( $0 ~ /^\s*$/) {
print "\x22" uid "\x22,\x22" dn "\x22";
dn = ""; record = "false";
}
}
}
{
if ($0 ~ /^dn:./) {
record = "true";
dn = $0;
}
}' ad_extract_tmp.ldif.unwrapped > ad_extract.csv
Este é um script de conversão awk significativamente simplificado que converte o ldif desembrulhado em csv.
É possível extrair o dn para os usuários ou e ir depois dos campos adicionais que são necessários. Apenas estenda o script final do awk.