Pular para o conteúdo principal

Sincronização dos integrantes dos grupos do AD nos grupos do GLPI.



Estamos implantando em nosso ambiente computacional, uma ferramenta bastante interessante, chama-se GLPI,

Entre as diversas funcionalidades, há a importação de grupos do AD da microsoft, autenticação e etc...

Para minha surpresa, na versão 9.4.6, os grupos são importados, bem como os usuários, porém os integrantes dos grupos no GLPI, não são preenchidos, gerando um trabalho manual.

Pesquisei bastante na internet, mas não achei nada pronto, então tive que construir meu próprio script shell para realizar tal tarefa, segue o script, que espero que ajude alguém:

[root@localhost ~]# cat /scripts/atualiza_grupos.sh
#!/bin/bash
#script feito por Edcley Firmino em 04/08/2020
#faz a sincronização dos integrantes dos grupos do AD nos grupos correspondentes no GLPI
mysql -u root -psenhamysqldoroot -e "select name, id from glpi.glpi_groups;" | while read name group_id; do
if [ $name != "name" ]
then
#echo "$name ...$group_id"
ldapsearch -x -D "usuarioparaglpi@seudominio" -H ldap://ip-do-seu-dominio -b "DC=teste,DC=com,DC=br" -w "senha-secreta" '(&(objectClass=user)(sAMAccountName=*)(memberOf=CN='$name',OU=sua-ou,DC=teste,DC=com,DC=br))' | grep sAMAccountName: | sed 's/sAMAccountName://' | while read integrante; do
mysql -u root -psenhamysqldoroot -e "select id from glpi.glpi_users where name = '$integrante';" | while read user_id; do
   if [ $user_id != "id" ]
     then
      mysql -u root -psenhamysqldoroot -e "select count(*) total from glpi.glpi_groups_users where users_id = '$user_id' and groups_id = '$group_id';" | while read total; do
     if [ $total != "total" ]
        then
          if [ $total -eq 0 ]
               then
                  mysql -u root -psenhamysqldoroot -e "insert into glpi.glpi_groups_users (users_id, groups_id, is_dynamic, is_manager, is_userdelegate) values ('$user_id','$group_id',0,0,0);"

         fi
    fi 
       done
fi
    done
done

while read nome id_user; do
        if [ $nome != "name" ]
         then
           let contador=0
             while read integrante_2; do
              if [ $nome = $integrante_2 ]
                then
                  contador=$[$contador + 1]
             fi
done < <( ldapsearch -x -D "usuarioparaglpi@seudominio" -H ldap://ipdoseudominio -b "DC=teste,DC=com,DC=br" -w "senha-secreta" '(&(objectClass=user)(sAMAccountName=*)(memberOf=CN='$name',OU=sua-OU,DC=teste,DC=com,DC=br))' | grep sAMAccountName: | sed 's/sAMAccountName://' )
         if [ $contador -eq 0 ]
          then
           # excluir usuario do grupo, pois se o contador e igual a 0, logo ele nao faz mais parte do grupo do AD
             mysql -u root -psenharootmysql -e " delete from glpi.glpi_groups_users where groups_id = '$group_id' and users_id = '$id_user';"
        fi
fi
done < <( mysql -u root -psenharootmysql -e "select name, u.id from glpi.glpi_groups_users gu inner join glpi.glpi_users u on (gu.users_id = u.id) where gu.groups_id = '$group_id';" )
fi
done
[root@localhost ~]#

Comentários

Postagens mais visitadas deste blog

Migração do servidor de email zimbra para um servidor de emails Exchange, utilizando o imapsync

Esses dias, fomos incumbidos da tarefa de realizar a migração de um servidor de emails zimbra 8.0 para uma estrutura Exchange 2013 da Microsoft. O motivo para a migração são muitos, mas basicamente realizamos essa migração por conta do Backup. É que a ferramenta de backup que possuímos só possui agente para a ferramenta de emails da Microsoft (creio que é assim na grande maioria das ferramentas profissionais de backup), possibilitando a realização com êxito de backups  Full e incrementais de forma eficiente, e a restauração granular. Vencida essa etapa do porquê da migração, não encontramos facilmente uma resposta na internet ou algum tutorial completo sobre a migração de emails da ferramenta Zimbra para o Exchange, motivo pelo qual nos motivamos para escrever esse artigo. Utilizamos para a migração a ferramenta Imapsync, instalada em um terceiro servidor (um CentOS 6.4) Esse artigo considera como premissa que já tenhamos instalados os servidores Zimbra 8.0 e o Servidor Ex...