Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 9.793 ]
Homepage: http://pedreiros.homelinux.com
Script para gerenciamento do samba feito com Dialog. Para homenagear os que adoram Linux e amam Rock and Roll, dei o nome de rockandroll.sh.
Para ele rodar basta instalar o dialog (ex.: apt-get install dialog ou yum install dialog).
Dar permissão de execução (chmod +x rockandroll.sh).
E executar:
$ ./rockandroll.sh
Lembrando que esse srcipt ainda está em desenvolvimento, mas como sou ansioso, quis colocar aqui para compartilhar. Fiquem a vontade em editá-lo etc...
Experimente ver as opções -V --version e -h --help que são bastante interessantes também em se ter em um script como esse.
Abraço e até logo.
#!/bin/bash #SCRIPT PARA ADICIONAR E EXCLUIR USUARIOS DO SAMBA # AUTOR: Anderson Rodrigues # Versão 1: 02/10/2009 # Versão 1.1: 09/05/2010: Inserido controle de -V --version e -h --help # ################################################################################################################## MENSAGEM_USO=" Uso: $(basename "$0") [-h | -V] Sistema para gerenciamento do samba, nele você pode inserir, modificar e apagar usuário do samba e do linux. Cria e apaga grupos, adiciona e retira usuários dos grupos. Altera senha dos usuários e etc... Faça bom uso do programa! -h, --help Mostra essa tela de ajuda -V, --version Mostra a versão do programa " #tratamento das opções de linha de comando case "$1" in -h | --help) echo "$MENSAGEM_USO" exit 0 ;; -V | --version) echo -n $(basename "$0") #Extrai a versão diretamente dos cabeçalhos do programa grep '^# Versão ' "$0" | tail -1 | cut -d : -f 1 | tr -d \# exit 0 ;; *) if test -n "$1" then echo "Opção Inválida: $1 -h --help para ajuda" exit 1 fi ;; esac ##### FUNCOES ###### # ADICIONAR USUARIO aduser() { dialog --backtitle "$titulo" --inputbox 'Nome completo do usuario:' -1 -1 '' 2> /tmp/nome dialog --backtitle "$titulo" --inputbox 'Nome de usuario:' -1 -1 '' 2> /tmp/usuario Nome=$(cat /tmp/nome) Usuario=$(cat /tmp/usuario) verifica=`cat /etc/passwd | cut -d : -f 1 | grep -i ^$Usuario$` # VERIFICAR SE USUARIO JÁ EXISTE NO SISTEMA if [ $verifica ==NULL ]; then # SOLICITAR E DEFINIR SENHA DO USUARIO A SER CRIADO dialog --backtitle "$titulo" --inputbox 'Digite a senha para '$Usuario':' -1 -1 '' 2> /tmp/senha Senha=$(cat /tmp/senha) # ADICIONAR USUARIO NO LINUX useradd -c "$Nome" -p `echo $Senha` $Usuario # ADICIONAR USUARIO NO SAMBA (echo $Senha; echo $Senha) | smbpasswd -s -a $Usuario # EXIBE NA TELA USUARIO QUE FOI CRIADO dialog --backtitle "$titulo" --msgbox "Usuario criado:\n\n $Nome - $Usuario \n$verifica" -1 -1 # CHAMA MENU NOVAMENTE menu else dialog --backtitle "$titulo" --msgbox "Usuário '$Usuario' já existe, escolha outro!" -1 -1 menu fi } ################################################################################################### # SAIR DO SISTEMA ################################################################################################### sair() { dialog --infobox 'Sistema finalizado pelo usuario' 0 0 } ################################################################################################### # EXIBIR USUARIOS ################################################################################################### exibir_users() { usuarios=`cat /etc/passwd | cut -d : -f 1` usuarios_smb=`cat /etc/samba/smbpasswd | cut -d : -f 1` dialog --msgbox "Usuários Linux:\n\n '$usuarios'\n\n Usuários Samba:\n\n $usuarios_smb" -1 -1 menu } ################################################################################################### # EXCLUIR USUÁRIOS ################################################################################################### excluir_user() { dialog --inputbox 'Digite o nome do usuário que deseja excluir:' -1 -1 '' 2> /tmp/user_del userdel=$(cat /tmp/user_del) verifica_user_del=`cat /etc/passwd | cut -d : -f 1 | grep ^$userdel$` # VERIFICA SE USUARIO A SER EXCLUIDO EXISTE if [ $verifica_user_del ==NULL ]; then dialog --msgbox "Usuário '$userdel' não existe '$verifica_user_del'" -1 -1 menu else smbpasswd -x $userdel userdel -r $userdel dialog --msgbox "Usuário $userdel excluído com sucesso!" -1 -1 menu fi } ################################################################################################### # EXIBIR GRUPOS ################################################################################################### exibir_grupos() { grupos=`cat /etc/group | cut -d : -f 1` dialog --msgbox "Grupos Existentes:\n\n '$grupos'" -1 -1 gerenciar_grupos } ################################################################################################### # ALTERAR SENHA ################################################################################################### alterar_senha() { dialog --inputbox "Digite o nome do usuário que \n deseja alterar a senha:" -1 -1 '' 2> /tmp/user_alterar usuario_alterar=$(cat /tmp/user_alterar) verifica_alterar=`cat /etc/passwd | cut -d : -f 1 | grep ^$usuario_alterar$` if [ $verifica_alterar ==NULL ]; then dialog --msgbox "Usuário '$usuario_alterar' não existe!" -1 -1 menu else dialog --inputbox "Digite a nova senha para '$usuario_alterar':" -1 -1 '' 2> /tmp/novasenha novasenha=$(cat /tmp/novasenha) # ADICIONAR USUARIO NO LINUX usermod -p `echo $novasenha` $usuario_alterar # ADICIONAR USUARIO NO SAMBA (echo $novasenha; echo $novasenha) | smbpasswd -s -a $usuario_alterar dialog --msgbox "Senha de '$usuario_alterar' alterada com sucesso!" -4 -4 menu fi } ################################################################################################### # ADICIONAR MAQUINA NO SAMBA ################################################################################################### adicionar_maquina() { dialog --inputbox "Digite o nome da máquina a ser adicionada:" -1 -1 '' 2> /tmp/novamaquina nova_maquina=$(cat /tmp/novamaquina) verifica_nova_maquina=`cat /etc/passwd | cut -d : -f 1 | grep ^nova_maquina$` if [ $verifica_nova_maquina ==NULL ]; then dialog --msgbox "Máquina '$nova_maquina' adicionada com sucesso!" -1 -1 menu else dialog --msgbox "Máquina já existe, escolha outro nome!" -1 -1 menu fi } ################################################################################################### # REMOVER MAQUINA ################################################################################################### remover_maquina() { dialog --msgbox "OPCAO EM DESENVOLVIMENTO" -1 -1 menu } ################################################################################################### # GERENCIAR GRUPOS ################################################################################################### gerenciar_grupos() { dialog --backtitle "Gerenciar Grupos" --inputbox "Escolha a opção:\n \n 1 - Exibir Grupos\n 2 - Adicionar usuario em grupo\n 3 - Remover usuario de um grupo\n 4 - Criar Grupo\n 5 - Remover Grupo\n 0 - Voltar para MENU principal\n" -1 -1 2>/tmp/ger_grupos Escolha_ger_grupos=$(cat /tmp/ger_grupos) case $Escolha_ger_grupos in 1) exibir_grupos ;; 2) adicionar_em_grupo ;; 3) remover_em_grupo ;; 4) criar_grupo ;; 5) remover_grupo ;; 6) criar_grupo ;; 7) alterar_senha ;; 8) adicionar_maquina ;; 9) remover_maquina ;; 0) menu ;; *) dialog --msgbox 'Opção Inválida' -1 -1; menu ;; esac } ################################################################################################### # CRIAR GRUPO ################################################################################################### criar_grupo() { dialog --inputbox "Digite o nome do grupos a ser criado" 0 0 '' 2>/tmp/novogrupo novogrupo=$( cat /tmp/novogrupo) verif_grupo=`cat /etc/group | cut -d : -f 1 | grep ^$novogrupo$` if [ $verif_grupo ==NULL ]; then groupadd $novogrupo dialog --msgbox "Grupo '$novogrupo' criado com sucesso!" 0 0 gerenciar_grupos else dialog --msgbox "Grupo '$novogrupo' já existe!" 0 0 gerenciar_grupos fi } ################################################################################################### # ADICIONAR USUARIO EM GRUPO(S) ################################################################################################### adicionar_em_grupo() { dialog --inputbox "Digite o nome do usuário:" 0 0 '' 2>/tmp/user_grupo usuario_grupo=$(cat /tmp/user_grupo) verifica=`cat /etc/passwd | cut -d : -f 1 | grep -i ^$usuario_grupo$` if [ $verifica ==NULL ]; then # VERIFICAR SE USUARIO JÁ EXISTE NO SISTEMA dialog --backtitle "$titulo" --msgbox "Usuario não existe!" 0 0 gerenciar_grupos else cat /etc/group | cut -d: -f 1-2 | sed s/:/' '/g | sed s/x/'off'/g | sed s/' '/'\n\"grupo\"\n'/g >/tmp/grupos lines=`cat /tmp/grupos | wc -l` linhas=`xpr $lines - 1` x=1 while [ $x -le $linhas ]; do cat /tmp/grupos | head -$x | tail -1 >> /tmp/novosgrupos x=`expr $x + 1` dialog --progressbox "Aguarde..." 0 0 done echo ")" >>/tmp/novosgrupos osgrupos=$( dialog --stdout \ --checklist "ESCOLHA O GRUPO:" 0 0 0 \ `cat /tmp/grupos` ) rm /tmp/grupos echo "$osgrupos" >/tmp/grupos qtd_grupos=`cat /tmp/grupos | wc -w` y=1 while [ $y -le $qtd_grupos ]; do group[$y]=`cat /tmp/grupos | cut -d " " -f "$y" | tr '"' " "` echo ${group[$y]} gpasswd -a $usuario_grupo ${group[$y]} y=`expr $y + 1` done dialog --backtitle "$titulo" --msgbox "Usuario '$usuario_grupo' adicionado com sucesso!" -1 -1 gerenciar_grupos fi } ################################################################################################### # REMOVER USUARIO DE GRUPO(S) ################################################################################################### remover_em_grupo() { dialog --inputbox "Digite o nome do usuário:" 0 0 '' 2>/tmp/user_grupo usuario_grupo=$(cat /tmp/user_grupo) verifica=`cat /etc/passwd | cut -d : -f 1 | grep -i ^$usuario_grupo$` if [ $verifica ==NULL ]; then # VERIFICAR SE USUARIO JÁ EXISTE NO SISTEMA dialog --backtitle "$titulo" --msgbox "Usuario não existe!" 0 0 gerenciar_grupos else cat /etc/group | cut -d: -f 1-2 | sed s/:/' '/g | sed s/x/'off'/g | sed s/' '/'\n\"grupo\"\n'/g >/tmp/grupos lines=`cat /tmp/grupos | wc -l` linhas=`xpr $lines - 1` x=1 while [ $x -le $linhas ]; do cat /tmp/grupos | head -$x | tail -1 >> /tmp/novosgrupos x=`expr $x + 1` dialog --progressbox "Aguarde..." 0 0 done echo ")" >>/tmp/novosgrupos osgrupos=$( dialog --stdout \ --checklist "ESCOLHA O GRUPO:" 0 0 0 \ `cat /tmp/grupos` ) rm /tmp/grupos echo "$osgrupos" >/tmp/grupos qtd_grupos=`cat /tmp/grupos | wc -w` y=1 while [ $y -le $qtd_grupos ]; do group[$y]=`cat /tmp/grupos | cut -d " " -f "$y" | tr '"' " "` echo ${group[$y]} gpasswd -d $usuario_grupo ${group[$y]} y=`expr $y + 1` done dialog --backtitle "$titulo" --msgbox "Usuario '$usuario_grupo' removido de grupo(s) com sucesso!" -1 -1 gerenciar_grupos fi } ################################################################################################### # REMOVER GRUPO(S) ################################################################################################### remover_grupo() { cat /etc/group | cut -d: -f 1-2 | sed s/:/' '/g | sed s/x/'off'/g | sed s/' '/'\n\"grupo\"\n'/g >/tmp/grupos lines=`cat /tmp/grupos | wc -l` linhas=`xpr $lines - 1` x=1 while [ $x -le $linhas ]; do cat /tmp/grupos | head -$x | tail -1 >> /tmp/novosgrupos x=`expr $x + 1` dialog --progressbox "Aguarde..." 0 0 done echo ")" >>/tmp/novosgrupos osgrupos=$( dialog --stdout \ --checklist "ESCOLHA O(S) GRUPO(S) PARA APAGAR:" 0 0 0 \ `cat /tmp/grupos` ) rm /tmp/grupos echo "$osgrupos" >/tmp/grupos qtd_grupos=`cat /tmp/grupos | wc -w` y=1 while [ $y -le $qtd_grupos ]; do group[$y]=`cat /tmp/grupos | cut -d " " -f "$y" | tr '"' " "` echo "Apagando grupo:${group[$y]}" groupdel ${group[$y]} y=`expr $y + 1` done dialog --backtitle "$titulo" --msgbox "Grupo(s) apagados do sistema com sucesso!" -1 -1 gerenciar_grupos } ################################################################################################### # MENU DO SISTEMA ################################################################################################### menu() { dialog --backtitle "$titulo" --inputbox "Escolha a Opcao Desejada:\n \n 1 - Adicionar Usuario\n 2 - Exibir Usuarios\n 3 - Excluir Usuario\n 4 - Gerenciar Grupos\n 5 - Alterar Senha\n 6 - Adicionar Maquina\n 7 - Remover Maquina\n 0 - Sair do Sistema\n" -1 -1 2>/tmp/escolhamenu EscolhaMenu=$(cat /tmp/escolhamenu) case $EscolhaMenu in 1) aduser ;; 2) exibir_users ;; 3) excluir_user ;; 4) gerenciar_grupos ;; 5) alterar_senha ;; 6) adicionar_maquina ;; 7) remover_maquina ;; 0) sair ;; *) dialog --msgbox 'Opção Inválida' -1 -1; menu ;; esac } ################################################################################################### # INICIO ################################################################################################### titulo="*** SCRIPT ADMINISTRAÇÃO SAMBA *** by Anderson Rodrigues " # PERGUNTA SE USUARIO DESEJA EXECUTAR SCRIPT OU SAIR DO SISTEMA dialog --backtitle "$titulo" --yesno 'Deseja Entrar no Sistema?' -1 -1 # DEFINIR VARIAVEL COM A ESCOLHA ANTERIOR Escolha1=$? #IF PARA Escolha1 (0=sim e 1=não) if [ $Escolha1 == 0 ]; then menu else sair fi ################################################################################################### ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ##### FIM ###################################################################################################
Backup individual de contas no ZIMBRA MAIL
Script de controle do Alfresco para RHEL / CentOS / Fedora
Criando vários usuários no LDAP a partir de um arquivo
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
A impressora não imprimi no win10 (5)
Partição e erro fatal do disco (10)
não sei o que tá havendo aqui! (3)
Função que recebe 20 números inteiros e retorna o 6° maior elemento do... (3)