Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.815 ]
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
Instalando e Integrando o SWATCH com SNORT
Script de alteração do sources.list
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









