Gerenciar usuários do OpenLDAP com Sistema ZIMBRA

Publicado por Marcelo Ferreira 03/07/2009

[ Hits: 12.150 ]

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

Carregar módulo kqemu na inicialização do sistema

Trocar wallpaper (papel de parede) do Gnome

Script para conversao de video compativel com PS3

Loop para baixar arquivo em seqüência

Script para teste de THP no sistema


  

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