Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.408 ]
Homepage: http://rideick.blogspot.com/
Script para converter CSV para ldif.
Precisa de alguns ajustes para adequar a realidade do seu arquivo csv, pois dependendo de onde foi gerado o mesmo, as colunas variam e vc tem que pôr no esquema as variáveis definidas no arquivo.
Comigo deu certo e quebrou um galho imenso.
#!/bin/bash #Para utililar o script você terá que instalar o dialog. #Como adequar a realidade do seu arquivo CSV #As variáveis f1, f2 e f... são correspondente as colunas do csv, por tanto basta que você posicione-as de acordo com o layout do arquivo que você pode ver abaixo: #f1 = dn: (f2) (f3) (f4) #(f11) #(f12) #(f8) #sn: (f9) #(f13) #(f14) #street: (f16) (f17) #l: (f18) #st: (f19) #postalCode: (f20) #objectClass: inetOrgPerson #objectClass: top #description: (f10) #homePhone: (f15) testaTrueFalse () { if [ $? = 1 ] then exit fi } #inicializa variável onde o parâmetro é linha do comando head que será usado logo abaixo cont=1 #captura do teclado o arquivo a ser convertido arquivo=$( dialog --stdout --inputbox 'Por favor digite o nome do arquivo CSV a ser convertido sem a extensão' 0 0 "arquivoCSV") #Chama Função testaTrueFalse #define o delimitador delimitador=$( dialog --stdout --inputbox 'Defina o delimitador de seu arquivo CSV. Ex: "," ";" caso o delimitador seja tabulação digite "t" (sem as aspas)' 0 0 "arquivoCSV") #Chama Função testaTrueFalse #Expresão regular para retirar as aspas do arquivo CSV sed '1,$s/"//g' $arquivo.csv > /tmp/$arquivo.csv #Define o nome do arquivo resultante arqResult=$( dialog --stdout --inputbox 'Digite o nome do arquivo resultante' 0 0 "arquivoLDIF") #Chama Função testaTrueFalse rm $arqResult while [ $cont -le 132 ] do #Definindo variáveis para impressão do arquivo f1=$(head -n$cont /tmp/$arquivo.csv | cut -f1 -d$delimitador | tail -n1) f2=$(head -n$cont /tmp/$arquivo.csv | cut -f2 -d$delimitador | tail -n1) f3=$(head -n$cont /tmp/$arquivo.csv | cut -f3 -d$delimitador | tail -n1) f4=$(head -n$cont /tmp/$arquivo.csv | cut -f4 -d$delimitador | tail -n1) f8=$(head -n$cont /tmp/$arquivo.csv | cut -f8 -d$delimitador | tail -n1) f9=$(head -n$cont /tmp/$arquivo.csv | cut -f9 -d$delimitador | tail -n1) f11=$(head -n$cont /tmp/$arquivo.csv | cut -f11 -d$delimitador | tail -n1) f12=$(head -n$cont /tmp/$arquivo.csv | cut -f12 -d$delimitador | tail -n1) f13=$(head -n$cont /tmp/$arquivo.csv | cut -f13 -d$delimitador | tail -n1) f14=$(head -n$cont /tmp/$arquivo.csv | cut -f14 -d$delimitador | tail -n1) f15=$(head -n$cont /tmp/$arquivo.csv | cut -f15 -d$delimitador | tail -n1) f16=$(head -n$cont /tmp/$arquivo.csv | cut -f16 -d$delimitador | tail -n1) f17=$(head -n$cont /tmp/$arquivo.csv | cut -f17 -d$delimitador | tail -n1) f18=$(head -n$cont /tmp/$arquivo.csv | cut -f18 -d$delimitador | tail -n1) f19=$(head -n$cont /tmp/$arquivo.csv | cut -f19 -d$delimitador | tail -n1) #f20=`head -n$cont $arquivo.csv | cut -f20 -d, | tail -n1` #Iprimindo variáveis no arquivo resultante echo dn: $f1,$f2,$f3,$f4 >> $arqResult.ldif echo givenName: $f11 >> $arqResult.ldif echo sn: $f12 >> $arqResult.ldif echo cn: $f8 >> $arqResult.ldif echo sn: $f9 >> $arqResult.ldif echo mail: $f13 >> $arqResult.ldif echo telephoneNumber$f14 >> $arqResult.ldif echo street: $f16 $f17 >> $arqResult.ldif echo l: $f18 >> $arqResult.ldif echo st: $f19 >> $arqResult.ldif echo postalCode: $f20 >> $arqResult.ldif echo objectClass: inetOrgPerson >> $arqResult.ldif echo objectClass: top >> $arqResult.ldif echo description: $f10 >> $arqResult.ldif echo homePhone: $f15 >> $arqResult.ldif #echo /n >> $arqResult.ldif cont=`expr $cont + 1` done #echo $arquivo.csv >> $arqResult.ldif ls -s $arquiResult.ldif #chama Função testaTrueFalse echo "Arquivo Gerado" $arqResult.ldif
Monitorando espaço em disco com IP dinâmico.
Autenticar usuários squid+shellscript+mysql
Bloqueia ataques do tipo bruteforce
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta