Alexandro Félix

"Conhecimento é poder." (Francis Bacon)

CSV to LDIF

leave a comment »

Esse script converte uma base de contatos no formato csv para ldif. Foi muito útil pra mim e acredito que poderá ser últil à outras pessoas.
Abraços.
#!/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

Written by rideick

Setembro 17, 2010 às 2:15 pm

Publicado em Linux

Tagged with , , , ,

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: