IMPORTAÇÃO DE DADOS ZIMBRA - VIA CURL
Nesta sessão vamos demonstrar para vocês como importar dados exportados de contas através do comando curl.
1) Você precisará ter permissão de acesso admin ao ambiente de destino;
2) É importante inserir uma etapa de comparação de hash md5 dos arquivos exportados para evitar importar arquivos corrompidos que possam inviabilidade a perfeita execução do script de importação;
3) Crie um scritp básico de importação levando em conta a origem dos arquivos e os nomes das contas de destino;
curl -k -u ${ADMIN}:${SENHA} -s -F file=@<ARQUIVO.TGZ> "https://${HOST_DEST}:7071/service/home/${CONTA}/?fmt=tgz&resolve=skip"
Verifique que a porta de acesso é 7071, essa porta é usado para a gerenciamento da console admin do zimbra. Caso utilize proxy, a porta padrão normalmente muda para 9071.
Segue um script que ajuda você a importar automaticamente todos os arquivos que forem caindo na pasta de arquivos de contas de email:
#######################################
#!/bin/bash
#BASE_PATH => Diretório onde contém os arquivos .tgz a serem enviados
BASE_PATH=/export/backup/recebidos1
IMPORTADOS=${BASE_PATH}/importados
PID_FILE=/tmp/pid_import.$$
ADMIN='admin@exemplo.com.br'
SENHA='suasenhaaqui'
SLEEP=120
saida="/root/scripts/import-accounts/saida1.txt"
[ -d "${IMPORTADOS}" ] || mkdir -p "${IMPORTADOS}"
cd $BASE_PATH
LOG(){
echo -e "$(date "+%D %T") $*"
}
SAIR(){
LOG "Fim"
RET=$(rm -vf $PID_FILE)
LOG "$RET"
exit
}
>$PID_FILE
LOG "Início PID: $PID_FILE"
cd ${BASE_PATH}
while [ -e "$PID_FILE" ];do
LOG "Atualizando contas."
DUMPS=$(ls -tr *@* | grep -v ".md5" 2>/dev/null)
if [ -z "$DUMPS" ]; then
LOG "Nenhum arquivo .tgz no diretório corrente."
else
for DUMP in $DUMPS;do
LOG "Verificando arquivo $DUMP."
[ -e "$PID_FILE" ] || SAIR
lsof $DUMP
if [ $? -ne 0 ] ;then
let "contr=$contr + 1"
FILE_SIZE=$(stat -c%s $DUMP)
USER1=$(echo $DUMP | sed 's/.tgz//')
let "FILE_SIZE_MB = $FILE_SIZE / 1048576"
LOG "Arquivo $contr $DUMP com ${FILE_SIZE_MB}Mb"
curl -k -u ${ADMIN}:${SENHA} -s -F file=@$DUMP "https://server.exemplo.com.br:7071/service/home/${USER1}/?fmt=tgz&resolve=skip"
mv $DUMP $IMPORTADOS
LOG "Arquivo $DUMP foi importado para conta $USER com sucesso!"
else
LOG "Arquivo $DUMP não está pronto para importar."
fi
done
fi
[ -e "$PID_FILE" ] || SAIR
LOG "Sleeping... ${SLEEP}s"
#SAIR
sleep $SLEEP
done
SAIR
Créditos: Anderson Serra
Comentários
Postar um comentário