Inclusão/Exclusão de usuários no CVS.

Publicado por 07/10/2005

[ Hits: 4.795 ]

Download cvs_adm.sh




Esse script faz a inclusão ou exclusão de usuários, dando ou retirando deles direitos de escrita ou leitura nos repositórios controlados pelo CVS ( Concurrent Versioning System).
Esse é um dos meus primeiros passos em Shell Script, então, dúvidas, sugestões ou bugs serão bem aceitos se reportados.

  



Esconder código-fonte

#!/bin/bash

help_usage()
{

cat <<EOF

Esse script adiciona/remove acesso de usuarios no CVS, tanto
para escrita como para leitura.

Use-o com a seguinte sintaxe:

$0 <comando> [argumentos - sao usados 2 argumentos]

Onde:

<comandos>    =   +r   -> da direito de leitura ao usuario 
             desejado.
         
              -r   -> retira o direito de leitura do
                  usuario desejado.
         
          +w   -> da direito de escrita ao usuario 
             desejado.
         
              -w   -> retira o direito de escrita do
                  usuario desejado.
         
         
              help -> exibe esse HELP.

[argumento1 - usuario] =   Login do usuario a ser adicionado/removido

[argumento2 - path] =      Path do repositorio.
            DETALHE: Nunca coloque uma barra no final
            do path do repositorio, pois isso causara
            erro na execucao do script.
            
autor: Bruno Bueno - brunoramosbueno[NO SPAM]gmail.com
          
EOF

}

add_to_readers()
{
    if [ "$1" = "" ] || [ "$2" = "" ];
    then
   echo "Faltam argumentos"
   exit
    fi
    
    if [ ! -d $2 ];
    then
   echo "Repositorio invalido ($2)"
   exit
    fi
    
    user=`cat $2/CVSROOT/passwd | grep $1 | cut -f1 -d:`
    if [ "$user" = "" ]; 
    then
   echo "Usuario nao existe no sistema, consulte /etc/passwd"    
   exit
    fi

    user=`cat $2/CVSROOT/readers | grep $1`
    if [ ! "$user" = "" ]; 
    then
   echo "Usuario ja esta no arquivo de readers"    
   exit
    fi
    
    echo "Dando direito de leitura para o usuario $1 ao repositorio $2"
    echo "$1" >> $2/CVSROOT/readers
}

del_from_readers()
{
    if [ "$1" = "" ] || [ "$2" = "" ];
    then
   echo "Faltam argumentos"
   exit
    fi
    
    if [ ! -d $2 ];
    then
   echo "Repositorio invalido ($2)"
   exit
    fi
    
    user=`cat $2/CVSROOT/passwd | grep $1 | cut -f1 -d:`
    if [ "$user" = "" ]; 
    then
   echo "Usuario nao existe no sistema, consulte /etc/passwd"    
   exit
    fi

    user=`cat $2/CVSROOT/readers | grep $1`
    if [ "$user" = "" ]; 
    then
   echo "Usuario nao existe no arquivo de readers"    
   exit
    fi
    
    echo "Removendo direitos de leitura do usuario $1 no repositorio $2"
    cat $2/CVSROOT/readers | grep -v ^$1 > $2/CVSROOT/readers
}

add_to_writers()
{
    if [ "$1" = "" ] || [ "$2" = "" ];
    then
   echo "Faltam argumentos"
   exit
    fi
    
    if [ ! -d $2 ];
    then
   echo "Repositorio invalido ($2)"
   exit
    fi
    
    user=`cat /etc/passwd | grep $1 | cut -f1 -d:`
    if [ "$user" = "" ];
    then
   echo "Usuario nao existe no sistema, consulte /etc/passwd"    
   exit
    fi

    user=`cat $2/CVSROOT/writers | grep $1`
    if [ ! "$user" = "" ]; 
    then
   echo "Usuario ja esta no arquivo de writers"    
   exit
    fi
    
    user=`cat $2/CVSROOT/readers | grep $1`
    if [ ! "$user" = "" ];
    then 
        echo "Usuario faz parte do grupo de readers. Retirando-o dos readers"
   cat $2/CVSROOT/readers | grep -v ^$1 > $2/CVSROOT/readers
   echo "Adicionando usuario $1 ao arquivo de writers do repositorio $2"
   echo "$1" >> $2/CVSROOT/writers
    else
        echo "Adicionando usuario $1 ao arquivo de writers do repositorio $2"
        echo "$1" >> $2/CVSROOT/writers        
    fi
    
    valid_pass=`cat /etc/shadow | grep $1 | cut -f2 -d: | cut -c1` ;
    if [ "$valid_pass" = "\$" ]
    then
        echo "Adicionando senha vinda do /etc/shadow no arquivo passwd do repositorio $2" 
        cat /etc/shadow | grep $1 | cut -f1,2 -d: >> $2/CVSROOT/passwd
    else
        echo "Usuario nao possui senha em /etc/shadow. Eh preciso gerar encriptacao da senha do usuario"
        crypt_pass=`mkpasswd --hash=md5`
   echo "Adicionando senha encriptada no arquivo passwd do repositorio $2"
   echo $1:$crypt_pass >> $2/CVSROOT/passwd   
   exit
    fi    
} 

del_from_writers()
{
    if [ "$1" = "" ] || [ "$2" = "" ];
    then
   echo "Faltam argumentos"
   exit
    fi
    
    if [ ! -d $2 ];
    then
   echo "Repositorio invalido ($2)"
   exit
    fi
    
    user=`cat /etc/passwd | grep $1 | cut -f1 -d:`
    if [ "$user" = "" ]; 
    then
   echo "Usuario nao existe no sistema, consulte /etc/passwd"    
   exit
    fi

    user=`cat $2/CVSROOT/writers | grep $1`
    if [ "$user" = "" ]; 
    then
   echo "Usuario nao existe no arquivo de writers"    
   exit
    fi
    
    echo "Removendo direitos de escrita do usuario $1 no repositorio $2"
    cat $2/CVSROOT/writers | grep -v ^$1 > $2/CVSROOT/writers
    cat $2/CVSROOT/passwd | grep -v ^$1 > $2/CVSROOT/passwd    
}

case "$1" in
    help|HELP|Help|-h|--help)
   help_usage ;;
    +r)
        add_to_readers $2 $3 ;;
    -r)
        del_from_readers $2 $3 ;;       
    +w)
        add_to_writers $2 $3 ;;
    -w)
        del_from_writers $2 $3 ;;
    *)
   help_usage ;;
esac

Scripts recomendados

verifica net e reconecta

Pesquisa Preços pela Internet

RT61 no SLACKWARE 11

Kronos - Sincronização de arquivos remotos

Jogo: racha-cuca


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts