Gerenciar usuários do OpenLDAP com Sistema ZIMBRA

Publicado por Marcelo Ferreira 03/07/2009

[ Hits: 11.890 ]

Download script_sincronizar_zimbra_com_base_ldap.sh




O script tem a função de adicionar, atualizar ou remover usuários do OpenLDAP com o sistema ZIMBRA.

O script é agendado para rodar a cada hora no Servidor Zimbra, que utiliza a base de dados do OpenLDAP.

  



Esconder código-fonte

#!/bin/bash
# Criado em 26/05/2009 by Marcelo Ferreira - marceferreira@hotmail.com
#
# Script para adicionar, atualizar ou remover usuários do OpenLDAP com o Sistema ZIMBRA
#
# Variahveis
#
LOG="/var/log/alterar_base_ldap.log"
USUARIOS="/opt/zimbra/relacao_de_usuarios.txt"
USUARIOS_OLD="/opt/zimbra/relacao_de_usuarios.old"
USUARIOS_DEL="/opt/zimbra/relacao_de_usuarios.del"
GERA_USUARIOS=`ldapsearch -LLL -x -h ip.do.servidor.ldap -b "dc=dominio,dc=com,dc=br" -D "cn=administrador,dc=dominio,dc=com,dc=br" -w "senha_do_usuario_administrador" '(uid=*)' | grep uid: | grep [^\$]$ | sort | uniq | cut -d " " -f 2 > $USUARIOS`
QTD_USUARIOS=`wc -l $USUARIOS | cut -d " " -f 1`
ECHO_USUARIOS=`cat $USUARIOS`
#
# Insercao de Usuarios do ldap no Zimbra
#
echo -e "\nInicio da Insercao de Usuarios do ldap no Zimbra - `date`\n" > $LOG
echo "**************************************************************" >> $LOG 2>&1
echo "Seram inseridos $QTD_USUARIOS usuario(s) do ldap no Zimbra" >> $LOG 2>&1
for o in $ECHO_USUARIOS; do
NOME_COMPLETO=`ldapsearch -LLL -x -h ip.do.servidor.ldap -b "dc=dominio,dc=com,dc=br" -D "cn=administrador,dc=dominio,dc=com,dc=br" -w "senha_do_usuario_administrador" uid=$o | grep description: | grep [^\$]$ | cut -d : -f 2`
   echo "Inserindo o usuario $o" >> $LOG 2>&1
   /opt/zimbra/bin/zmprov ca $o@dominio.com.br "" displayName "$NOME_COMPLETO" >> $LOG 2>&1
   echo "Alterando o usuario $o" >> $LOG 2>&1
   /opt/zimbra/bin/zmprov ma $o@dominio.com.br displayName "$NOME_COMPLETO" >> $LOG 2>&1
   echo "**************************************************************" >> $LOG 2>&1
done
#
# Exclusao de Usuarios do ldap no Zimbra
#
DIFF=`diff /opt/zimbra/relacao_de_usuarios.txt /opt/zimbra/relacao_de_usuarios.old |  grep \> | cut -d " " -f 2 > $USUARIOS_DEL`
QTD_USUARIOS_DEL=`wc -l $USUARIOS_DEL | cut -d " " -f 1`
ECHO_USUARIOS_DEL=`cat $USUARIOS_DEL`
echo "Seram excluidos $QTD_USUARIOS_DEL usuario(s) do ldap no Zimbra" >> $LOG 2>&1
for o in $ECHO_USUARIOS_DEL; do
   echo "Removendo o usuarios $o" >> $LOG 2>&1
   /opt/zimbra/bin/zmprov da $o@dominio.com.br >> $LOG 2>&1
   echo "**************************************************************" >> $LOG 2>&1
done
#
# Limpando arquivos gerados
#
echo "Limpando arquivos gerados" >> $LOG 2>&1
mv $USUARIOS $USUARIOS_OLD >> $LOG 2>&1
rm -f $USUARIOS >> $LOG 2>&1
rm -f $USUARIOS_DEL >> $LOG 2>&1
echo "log da execucao gerado no arquivo $LOG"
echo -e "\nFim do script - `date`\n" >> $LOG

Scripts recomendados

Script para atualização de sistemas Debian, Ubuntu e variáveis.

string_out: remova a primeira ocorrência de uma string em um arquivo de texto

Zclamav - script para substituir o Clamtk

apaga_arquivos.sh

Script para softwares de rede


  

Comentários
[1] Comentário enviado por feliperossi em 22/03/2011 - 08:46h

bom dia
parabens pela dica acima.

depois de mais de 15 dias procurando uma solucao para migrar usuarios ldap+mysql+postfix+roudcubemail para o zimbra.
ontem a tarde por um acaso procurando na comunidade vivaolinux, encontrei seu script para gerenciar usuarios.
a base que precisava migrar passava dos mil contas. com seu script e algumas melhorarias consegui fazer a migracao
em pouco mais de 40 minutos e tudo ocorreu perfeitamente.

nos proximos dias estarei postando um dica com os creditos do seu script e as melhorias que fiz para ajudar as diversas pessoas que encontrei com o mesmo problemas na migracao de usuarios de openldap para o zimbra.

ATT

[2] Comentário enviado por feliperossi em 07/04/2011 - 14:46h

boa tarde.
acrescentei no seu script uma opcao para alterar a senha de todos os usuarios.
mas a opcao nao funcionou.

teria alguma dica para fazer com seta uma senha padrao para todos os usuarios atraves do script.





#!/bin/bash
# Criado em 26/05/2009 by Marcelo Ferreira - marceferreira@hotmail.com
#
# Script para adicionar, atualizar ou remover usuários do OpenLDAP com o Sistema ZIMBRA
#
# Variahveis
#
LOG="/var/log/alterar_base_ldap.log"
USUARIOS="/opt/zimbra/relacao_de_usuarios.txt"
USUARIOS_OLD="/opt/zimbra/relacao_de_usuarios.old"
USUARIOS_DEL="/opt/zimbra/relacao_de_usuarios.del"
SENHA="/opt/zimbra/senhas.txt"
GERA_USUARIOS=`ldapsearch -LLL -x -h xx.xx.xx.xx -b "dc=xx,dc=com,dc=br" -D "cn=manager,dc=xxx,dc=com,dc=br" -w "XXXX" '(uid=*)' | grep uid: | grep [^\$]$ | sort | uniq | cut -d " " -f 2 > $USUARIOS`
QTD_USUARIOS=`wc -l $USUARIOS | cut -d " " -f 1`
ECHO_USUARIOS=`cat $USUARIOS`
#
# Insercao de Usuarios do ldap no Zimbra
#
echo -e "\nInicio da Insercao de Usuarios do ldap no Zimbra - `date`\n" > $LOG
echo "**************************************************************" >> $LOG 2>&1
echo "Seram inseridos $QTD_USUARIOS usuario(s) do ldap no Zimbra" >> $LOG 2>&1
for o in $ECHO_USUARIOS; do
NOME_COMPLETO=`ldapsearch -LLL -x -h xx.xx.xx.xx -b "dc=xxx,dc=com,dc=br" -D "cn=manager,dc=xxx,dc=com,dc=br" -w "XXXX" uid=$o | grep description: | grep [^\$]$ | cut -d : -f 2`
# echo "Inserindo o usuario $o" >> $LOG 2>&1
# /opt/zimbra/bin/zmprov ca $o@xxxx.com.br "" displayName "$NOME_COMPLETO" >> $LOG 2>&1
# echo "Alterando o usuario $o" >> $LOG 2>&1
# /opt/zimbra/bin/zmprov ma $o@xxxx.com.br displayName "$NOME_COMPLETO" >> $LOG 2>&1
# echo "**************************************************************" >> $LOG 2>&1
echo "Alterando a senha do usuario $o" >> $LOG 2>&1
/opt/zimbra/bin/zmprov sp $o@xxxx.com.br displayName "$SENHA" >> $LOG 2>&1
echo "**************************************************************" >> $LOG 2>&1
done
#
# Exclusao de Usuarios do ldap no Zimbra
#
#DIFF=`diff /opt/zimbra/relacao_de_usuarios.txt /opt/zimbra/relacao_de_usuarios.old | grep \> | cut -d " " -f 2 > $USUARIOS_DEL`
#QTD_USUARIOS_DEL=`wc -l $USUARIOS_DEL | cut -d " " -f 1`
#ECHO_USUARIOS_DEL=`cat $USUARIOS_DEL`
#echo "Seram excluidos $QTD_USUARIOS_DEL usuario(s) do ldap no Zimbra" >> $LOG 2>&1
#for o in $ECHO_USUARIOS_DEL; do
# echo "Removendo o usuarios $o" >> $LOG 2>&1
# /opt/zimbra/bin/zmprov da $o@xxxx.com.br >> $LOG 2>&1
# echo "**************************************************************" >> $LOG 2>&1
#done
#
# Limpando arquivos gerados
#
#echo "Limpando arquivos gerados" >> $LOG 2>&1
#mv $USUARIOS $USUARIOS_OLD >> $LOG 2>&1
#rm -f $USUARIOS >> $LOG 2>&1
#rm -f $USUARIOS_DEL >> $LOG 2>&1
echo "log da execucao gerado no arquivo $LOG"
echo -e "\nFim do script - `date`\n" >> $LOG


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts