Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.734 ]
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
zsh: Validar IPv4 utilizando PCRE
Configurando Adaptador USBSerial no Ubuntu usando udev
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)
Instalação dualboot Windows 11 e Debian 13 (29)









