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
Twitter via shell
Autenticado Velox Empresarial II
"desmontar" partiçao fat
Editor de TAG MP3
Script de Inclusão (atualização) de Repositórios para Mandriva 2008.
Comentários
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
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
Mensagem
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
Enviar