Automatizar o controle de um servidor de compartilhamentos Samba

Publicado por Denilson Martins (última atualização em 10/02/2015)

[ Hits: 3.926 ]

Homepage: www.compels.net

Download controla-samba.sh




Criei o script para automatizar o controle de usuários no Samba, cabe melhorias mas por enquanto é um script de uma ideia inicial.

  



Esconder código-fonte

#!/bin/bash

# @uthor - Denilson Martins -- 01/2015

listaUsuarios=/etc/passwd
listaGrupos=/etc/group

Menu() {
   clear
   echo "#################################################"
   echo "#         USUARIOS COMPARTILHAMENTO:            #"
   echo "# --------------------------------------------- #"
   echo "#  1-> ADICIONAR USUARIO:                       #"
   echo "#  2-> DELETAR USUARIO:                         #"
   echo "#  3-> TROCAR SENHA USUARIO:                    #"
   echo "#  4-> ADICIONAR GRUPO DE USUARIOS:             #"
   echo "#  5-> DELETAR GRUPO DE USUARIOS:               #"
   echo "#  6-> ADICIONAR USUARIO A UM GRUPO EXISTENTE:  #"
   echo "#  7-> REMOVER USUARIO DE UM GRUPO EXISTENTE:   #"
   echo "#  8-> LISTAR USUARIOS DE UM GRUPO EXISTENTE:   #"
   echo "#  QUALQUER TECLA DIFERENTE PARA SAIR:          #"
   echo "# --------------------------------------------- #"
   echo "#  DIGITE UMA OPCAO:                            #"
   echo "#_______________________________________________#"
   read op
   case $op in
      1) Adicionar ;;
      2) Deletar ;;
      3) TrocarSenha ;;
      4) AdicionarGrupo ;;
      5) DeletarGrupo ;;
      6) AdicionarUsuarioGrupo ;;
      7) RemoverUsuarioGrupo ;;
      8) ListarUsuarioGrupo ;;
      *) exit ;;
   esac
}

Adicionar(){

   listaUsuarios

   echo "Digite o nome do usuario"
   read user
   adduser --no-create-home --disabled-login $user
   smbpasswd -a $user
   /etc/init.d/samba restart
   
   listaUsuarios
   msgVoltar
}

Deletar(){
   
   listaUsuarios

   echo "Digite o nome do usuario"
   read user
   smbpasswd -x $user
   deluser $user
   /etc/init.d/samba restart

   listaUsuarios
   msgVoltar
}

TrocarSenha(){

   listaUsuarios
   
   echo "Digite o nome do usuario"
   read user
   smbpasswd -a $user
   /etc/init.d/samba restart

   msgVoltar
}

AdicionarGrupo() {

   listaGrupos
   
   echo "Digite o nome do grupo: "
   read grupo
   addgroup $grupo

   listaGrupos
   msgVoltar
}

DeletarGrupo() {
   
   listaGrupos

   echo "Digite o nome do grupo: "
   read grupo
   delgroup $grupo
   clear

   listaGrupos
   msgVoltar

}

AdicionarUsuarioGrupo() {
   
   listaUsuarios

   echo "Digite o nome do usuario"
   read user

   listaGrupos

   echo "Digite o nome do grupo"
   read grupo
   adduser $user $grupo

   msgVoltar
}

RemoverUsuarioGrupo() {
   
   listaUsuarios

   echo "Digite o nome do usuario"
   read user

   listaGrupos

   echo "Digite o nome do grupo"
   read grupo
   deluser $user $grupo

   msgVoltar
}

ListarUsuarioGrupo() {

   listaGrupos

   echo "Digite o nome do grupo"
   read grupo

   cat $listaGrupos | grep $grupo | awk -F: '{ print "--------------------------- \n" "Usuarios do grupo $grupo:\n" $4}'

   echo "---------------------------"
   echo "Enter para continuar:"
   read

   msgVoltar
}


## Funcoes basicas mas com bastante repeticao

listaUsuarios() {
   clear
   echo "---------------------------"
   echo "Usuarios ativos no compartilhamento"
   echo "---------------------------"
   cat $listaUsuarios | grep [0-1][0-9][0-9][0-9] | awk -F: '{print $1}'

   echo "---------------------------"
}

listaGrupos() {
   clear
   echo "---------------------------"
   echo "Grupos ativos no compartilhamento"
   echo "---------------------------"
   cat $listaGrupos | grep [0-1][0-9][0-9][0-9] | awk -F: '{print $1}'
   echo "---------------------------"
}

msgVoltar(){
   echo "--------------------------"
   echo "Voltando ao Menu principal"
   echo "--------------------------"
   sleep 3
   Menu
}

Menu

Scripts recomendados

Gerenciador de arquivos MP3

Estatísticas de tráfego de rede

Bloquear contas em servidor Zimbra após 45 dias

Copiando um arquivo matriz para vários outros com nomes diferentes...

Configuração Apache e DNS (bind)


  

Comentários
[1] Comentário enviado por marlonreck em 10/02/2015 - 15:47h

Muito bom seu script, bem organizado e de fácil entendimento. E gostaria de contribuir com a minha humilde opinião, trocaria as linhas "cat | grep | awk" por awk -F : '/item de pesquisa/ {print $1}' $variável, pois o awk trás o mesmo resultado sem o uso dos pipes, cat e grep.
Ex.:
cat $listaUsuarios | grep [0-1][0-9][0-9][0-9] | awk -F: '{print $1}'
por
awk -F : '/[0-1][0-9][0-9][0-9]/ {print $1}' /etc/passwd


[2] Comentário enviado por wagnerfs em 12/02/2015 - 04:10h

Estava pensando exatamente em criar uma arquivo parecido, mas aí você criou esse script. Muito bom! Parabéns e obrigado por compartilhar conhecimento.

_________________________
Wagner F. de Souza
Graduado em Redes de Computadores
"GNU/Linux for human beings."
LPI ID: LPI000297782

[3] Comentário enviado por denilsoneskas em 12/02/2015 - 10:07h


marlonreck -- Obrigado pelo feedback, gostei bastante desta possibilidade sugerida, pois pode eliminar alguns dados como por exemplo as variaveis listaUsuarios e listaGrupos. Como havia dito, cabe muitas melhorias por ser algo de uma ideia básica.
k666 -- Obrigado também pelo feedback.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts