Fedora autenticando no LDAP.

Publicado por Alessandro Dias 04/04/2007

[ Hits: 10.110 ]

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

UNIX - Alerta de espaço em disco via e-mail

Script para autenticar Speedy Business

configurar do samba e pureftpd

Script para fazer levantamento de hardware e software no Gentoo

Front-end para backup em CDRW e DVDRW


  

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