Automatizar o controle de um servidor de compartilhamentos Samba

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

[ Hits: 2.864 ]

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

Trocando MAC address de placa de rede

DHCP

Funções Ni - funções para manipular listas e strings

Script para verificação do JAVA configurado no PATH

Script stop no vncserver


  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts