Gerenciamento do Samba com Dialog
Publicado por Anderson Rodrigues (última atualização em 01/06/2010)
[ Hits: 10.095 ]
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 para Criar/Modificar Usuarios No Ldap + Samba
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (1)
Alguém já testou o novo COSMIC Desktop? O que achou? (4)
Não consigo instalar distro antiga no virtualbox nem direto no hd (29)
queria saber como posso alterar a frequencia do meu ryzen 2300u pro (3)









