Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.743 ]
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
configurar a rede wireless passando por roteador (melhorado e comentado)
BACKUP para micros com Windows XP utilizando o share administrativo ( C$ )
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
Erro no suitable vídeo mode (2)
Pergunta: Meu teclado não está respondendo direito como e consertar? (3)
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (1)









