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

Postagens mais visitadas deste blog

PYTHON - ENVIAR MENSAGEM VIA TELEGRAM

Dicas Zimbra

ZIMBRA - BACKUP CONTAS DE EMAILS FECHADAS A MAIS DE 90 DIAS