Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 9.788 ]
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 ###################################################################################################
FIREWALL COM IPTABLES - PARA INTERNET DISCADA E ADSL
Trocar string A por string B em vários arquivos
SCRIPT PARA AUTOMAÇÃO DE ATUALIZAÇÃO EM AMBIENTE DEBIAN OU DERIVADOS.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta