Fedora autenticando no LDAP.

Publicado por Alessandro Dias 04/04/2007

[ Hits: 10.211 ]

Download ldap_client.conf.sh




Script para configuração de clientes de autenticação LDAP no domínio chamado TESTE.

  



Esconder código-fonte

#!/bin/bash

# --------------- permissões do /home
chmod 755 /home

echo -e "Verifica se o pacote \"openldap-clients\" está instalado...\n"
PACOTE=`rpm -qa |grep openldap-clients`

if [ "$PACOTE" == "" ]; then
echo -e "Pacote \"openldap-clients\" não instalado! Aguarde instalação...\n"
yum install dialog
fi

VER=`grep "ldap.ditec" /etc/openldap/ldap.conf`
if [ "$VER" == "" ]; then
   echo "HOST ldap.ditec.dpf.gov.br" >> /etc/openldap/ldap.conf
   echo "BASE o=dpf" >> /etc/openldap/ldap.conf
   echo "TLS_CACERT /etc/pki/tls/certs/ca.crt" >> /etc/openldap/ldap.conf
fi

echo -e "Verifica se o pacote Dialog está instalado...\n"
PACOTE=`rpm -qa |grep dialog-1`

if [ "$PACOTE" == "" ]; then
echo -e "Pacote Dialog não instalado! Aguarde instalação...\n"
yum install dialog
fi

if [ -f /etc/pki/tls/certs/ca.crt ]; then
     echo -e "\nCertificado Ok!"
     echo $porcento
else
     echo -e "\nFazendo download do certificado Ok!"
     wget http://ditec.dpf.gov.br/download/servicos/software_livre/ca.crt
     mv -f ca.crt /etc/pki/tls/certs/ca.crt
fi

# -------------------Retira as máquinas
i=1
usuario="teste"
TESTE=`ldapsearch -x -Z "(uid=*)" uid |grep uid: | cut -d " " -f 2`
nova_lista=""
echo -e "\nAguarde enquanto o sistema verifica os usuários...\n"

while [ "$usuario" != "" ]; do
   usuario=`echo $TESTE | cut -d " " -f $i`
   tam=`expr ${#usuario} \- 1`
   if [ "${usuario:$tam:1}" != "$" ];then
      nova_lista=`echo $nova_lista``echo " $usuario"`
   fi
   i=`expr $i \+ 1`
done

#-----Montando lista de usuários para o Dialog
usuario="teste"
echo -e "\nAguarde enquanto o sistema monta o Dialog...\n"

i=1
while [ "$usuario" != "" ]; do
   usuario=`echo $nova_lista | cut -d " " -f $i`

   VER=`ls /home/ | grep "$usuario"`
   if [ "$VER" != "" ]; then
      USUARIOS[$i]=`echo $usuario``echo -e " \"\" ON"`
   else
      USUARIOS[$i]=`echo $usuario``echo -e " \"\" OFF"`
   fi
   i=`expr $i \+ 1`
done

num_users=`expr $i \- 2`

escolha=$( dialog --stdout \
--checklist 'Selecione os usuários que utilizarão a sua máquina:' 0 0 0 \
`for ((a=1 ; a<$num_users ; a++));do echo ${USUARIOS[$a]};done` \
`echo ${USUARIOS[$num_users]}` )  

CANCELA=$?


# Apenda a palavra "fim"
usuarios=`echo $escolha``echo " fim"`

# Inicializa variáveis
user_del="teste"
i=1

# ----------------------------------------------  Excluindo Usuários
# Apenda a palavra "fim"
lista=`ls /home/`
lista=`echo $lista``echo " fim"`
apagados=""
incluidos=""
mantidos=""

if [ "$CANCELA" != "1" ];then
   while [ "$user_del" != "fim" ]; do
      user_del=`echo ${lista} | cut -d " " -f $i`
   
      apagar=`echo ${escolha} | grep $user_del`
      YES=0
 
      if [ "$apagar" == "" -a "$user_del" != "fim" ];then
            dialog --yesno "Vc realmente quer excluir o usuário $user_del?" 0 0 && YES=1
         if [ "$YES" == "1" ];then
            rm -rf /home/$user_del/
            apagados=`echo $apagados``echo " $user_del"`
         else
            mantidos=`echo $mantidos``echo " $user_del"`
         fi
      fi

      i=`expr $i \+ 1`
   done
fi

# Inicializa variáveis
USERNAME="teste"
i=1
aplic=0

# -----------------------------------------------  Incluindo Usuários
while [ "$USERNAME" != "fim" ]; do

   USERNAME=`echo ${usuarios} | cut -d " " -f $i`
   
   if [ "$USERNAME" != "fim" ]; then
      len_username=${#USERNAME}
      len_username=`expr $len_username \- 2`
      USERNAME=${USERNAME:1:$len_username}

      if [ -e /home/$USERNAME ];then
         #echo -e "/home/$USERNAME Ok!\n"
         mantidos=`echo $mantidos``echo " $USERNAME"`
      else
         incluidos=`echo $incluidos``echo " $USERNAME"`
         mkdir /home/$USERNAME
         if [ -f /etc/skel/.bash_logout ]; then
            cp -R /etc/skel/.bash_logout /home/$USERNAME/
         fi
         if [ -f /etc/skel/.bash_profile ]; then
            cp -R /etc/skel/.bash_profile /home/$USERNAME/
         fi
         if [ -f /etc/skel/.bashrc ]; then
            cp -R /etc/skel/.bashrc /home/$USERNAME/
         fi
         if [ -f /etc/skel/.gtkrc ]; then
            cp -R /etc/skel/.gtkrc /home/$USERNAME/
         fi

         chown -R $USERNAME:usuarios /home/$USERNAME
         chmod -R go-rwx /home/$USERNAME
         #echo -e "/home/$USERNAME criado!\n"
      fi
      aplic=1
   fi
   i=`expr $i \+ 1`
done

if [ "$aplic" == "1" ]; then

   todos=`echo $mantidos``echo " $incluidos"`
   anteriores=`echo $mantidos``echo " $apagados"`

   #echo -e "Configurando o cliente LDAP...\n"
   authconfig --enableldap --enableldapauth --enableldaptls --ldapserver ldap.ditec.dpf.gov.br --ldapbasedn o=dpf --kickstart

   dialog --title "Histórico de atividades" \
--msgbox "\nUsuário do sistema antes das atualizações:\n$anteriores\n\nUsuários incluídos:\n$incluidos\n\nUsuários excluídos:\n$apagados\n\nUsuários do sistema após atualizações:\n$todos" \
20 50
fi


exit 0


Scripts recomendados

Administração servidor WEB com Dialog

Criar pacotes .deb apartir de script

TCPDump do Dia

Software backup, restore, leitura de logs, com dialog

Um super limpador do sistema KDu


  

Comentários
[1] Comentário enviado por diaspcf em 07/05/2007 - 15:19h

Caro Usuário,
Tente pegar o script a partir do código fonte, pois parece que o link está quebrado.
Obrigado.

[2] Comentário enviado por renatooluiz em 11/05/2007 - 11:17h

Olá, o seguinte erro está ocorrendo!!!
O que devo fazer?
Parece que o endereço indicado não é encontrado!!!

Fazendo download do certificado Ok!
--11:16:17-- http://ditec.dpf.gov.br/download/servicos/software_livre/ca.crt
Resolvendo ditec.dpf.gov.br... falha: Nome ou serviço desconhecido.
mv: impossível fazer stat em `ca.crt': Arquivo ou diretório não encontrado
ldap_start_tls: Can't contact LDAP server (-1)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts