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
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