Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 9.873 ]
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 ###################################################################################################
diMail - envia e-mail com um front do dialog
Criação de servidores de arquivos simples com Samba
Criando Autoridades Certificadoras e Certificados de Testes no Linux
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
firefox nao guarda meus logins nos sites (1)
Instalar debian testing (13) "por cima" do debian 12 (2)
Erro de segmentação «Segmentation fault (core dumped)» ao retornar obj... (1)