Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 10.025 ]
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
###################################################################################################
Script em Bash para gerenciar as novas versões do Java e permitir escolher a versão pa
Instalação completa de servidor de e-mail
Descompactar vários arquivos ao mesmo tempo de um diretório específico
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









