Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 9.846 ]
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 ###################################################################################################
Instalando e Integrando o SWATCH com SNORT
Claro 3g Sony Ericsson md300 script conexao REVISAO 3
Gerando HTML de status de HD e coneccao de internet
Monitorar status de transferência das interfaces de rede
Verifica Falha Humana de Segurança em e-mail (usada por SPAMERS)
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (1)
VMs e Interfaces de Rede desapareceram (13)
Como abrir o pycharm no linux [RESOLVIDO] (4)