Converter CSV para Ldif
Publicado por Alexandro Felix 21/06/2007
[ Hits: 8.432 ]
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
ZVideo1.1 - Conversor de formatos de vídeo para divX
Verifica últimos arquivos criados
Troca periódica de senhas para usuários
Bloqueia MAC Adress salvos na lista
Exemplo da inicialização do serviço sshd
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (7)