Gerenciamento de usários do Squid usando Dialog
Publicado por Paulo Oliveira Reis 04/09/2006
[ Hits: 8.933 ]
Este script visa facilitar a administração dos usuários do Squid, permitindo cadastrar, excluir, alterar senha e pesquisar usuário. Tudo isso usando Dialog, para tornar essa tarefa o mais amigável possível, podendo até delegar essa tarefa para funcionários com pouca ou nenhuma experiência em Linux, tamanha interatividade do script. Espero ansiosamente por contribuições, dicas, críticas construtivas.
Abraços a todos e VivaOLinux
#!/bin/bash
#########################################################################
# #
# Empresa: Hospital Anchieta Ltda #
# Homepage: www.hospitalanchieta.com.br #
# Autor: Paulo Oliveira Reis Cargo: Tecnico de Apoio ao Usuario #
# Data Criacao: 12/06/2006 Ultima Alteracao: 14/06/2006 #
# Contato: paulo@hospitalanchieta.com.br #
# #
# Script para gerencimento de usuarios do proxy squid, usando dialog e #
# armazenando alem do login, nome completo e setor separados por : como #
# no arquivo passwd gerando: <login>:<senha>:<nome completo>:<setor> que#
# facilita a identificacao do usuario e geracao de relatorios #
# #
#########################################################################
lb_janela="ADMINISTRACAO DO ACESSO A INTERNET"
Menu () {
txt_opcao=$( dialog --stdout --backtitle "$lb_janela" --title 'CADASTRO INTERNET' --ok-label 'Ok' \
--nocancel --menu 'Escolha a opcao desejada' 0 0 0 Cadastrar 'Criar usuario' Excluir 'Excluir usuario' \
Atualizar 'Trocar senha' Pesquisar 'Pesquisar usuario cadastrado' Sair 'Finalizar' )
case "$txt_opcao" in
Cadastrar)
CadastrarLogin
;;
Excluir)
ExcluirLogin
;;
Atualizar)
TrocarSenha
;;
Pesquisar)
PesquisaLogin
;;
Sair)
clear
exit
;;
esac
}
CadastrarLogin () {
resp=1
while [ $resp -eq 1 ]; do
Login
if [ -z $txt_login ] || [ $txt_login == "root" ]; then
msgInvalido
else
existelogin=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $1}' )
if [ $txt_login == $existelogin ]; then
dialog --backtitle "$lb_janela" --title 'DUPLICIDADE' --ok-label 'Ok' --nocancel \
--msgbox "Usuario \"$txt_login\" ja cadastrado!" 7 50
else
resp=0
fi
fi
done
Nome
}
ExcluirLogin () {
resp=1
while [ $resp -eq 1 ]; do
Login
existelogin=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $1}' )
if [ $txt_login == $existelogin ]; then
htpasswd -D /etc/squid/regras/passwd $txt_login
dialog --backtitle "$lb_janela" --title 'EXCLUSAO' --ok-label 'Concluir' \
--msgbox "Login \"$txt_login\" excluido com sucesso!!" 7 60
resp=0
else
msgNaoCadastrado
fi
done
Menu
}
TrocarSenha () {
resp=1
while [ $resp -eq 1 ]; do
Login
existelogin=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $1}' )
if [ $txt_login == $existelogin ]; then
Senha
txt_nome=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $3}' )
txt_setor=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $4}' )
dadosemp=$(echo "":"$txt_nome":"$txt_setor")
htpasswd -D /etc/squid/regras/passwd $txt_login
CriarLogin
dialog --backtitle "$lb_janela" --title 'TROCA DE SENHA' --ok-label 'Concluir' \
--msgbox "Troca de senha \"$txt_login\" efetuada com sucesso!!" 7 60
resp=0
else
msgNaoCadastrado
fi
done
Menu
}
PesquisaLogin () {
Login
if [ -z $txt_login ] || [ $txt_login == "root" ]; then
msgInvalido
else
existelogin=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $1}' )
if [ $txt_login == $existelogin ]; then
txt_nome=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $3}' )
txt_setor=$( cat /etc/squid/regras/passwd |grep -E ^$txt_login\:|awk 'BEGIN{FS=":"}{print $4}' )
dialog --backtitle "$lb_janela" --title 'PESQUISA USUARIO' --ok-label 'Ok' \
--nocancel --msgbox "Os dados informados foram:
\n\nNOME COMPLETO: $txt_nome\nSETOR: $txt_setor\nLOGIN: $txt_login" 10 60
else
msgNaoCadastrado
fi
fi
Menu
}
Nome () {
txt_nome=$( dialog --stdout --backtitle "$lb_janela" --title 'NOME' --ok-label 'Proximo' \
--nocancel --inputbox 'NOME COMPLETO:' 7 70 )
txt_nome=$( echo $txt_nome |tr a-z A-Z )
Setor
}
Setor () {
txt_setor=$( dialog --stdout --backtitle "$lb_janela" --title 'SIGLA DO SETOR' --ok-label 'Proximo' \
--nocancel --inputbox 'SETOR:' 7 30 )
txt_setor=$( echo $txt_setor |tr a-z A-Z )
Senha
ConfirmaDados
}
ConfirmaDados () {
dialog --backtitle "$lb_janela" --title 'CONFIRMA CADASTRO' --yes-label 'Cadastrar' \
--no-label 'Nao-Cadastrar' --yesno "Os dados informados foram:
\n\nNOME COMPLETO: $txt_nome\nSETOR: $txt_setor\nLOGIN: $txt_login" 10 60
if [ $? -eq 0 ]; then
dadosemp=$(echo "":"$txt_nome":"$txt_setor")
CriarLogin
msgCadastrado
else
Menu
fi
}
CriarLogin () {
rm -rf /tmp/*.webpwd
arqtmp="pwd$txt_login.webpwd"
touch /tmp/$arqtmp
htpasswd -b /tmp/$arqtmp $txt_login $txt_senha
dadospwd=$( cat /tmp/$arqtmp )
rm -rf /tmp/$arqtmp
echo "$dadospwd$dadosemp" >> /etc/squid/regras/passwd
}
Login () {
txt_login=$( dialog --stdout --backtitle "$lb_janela" --title 'LOGIN' --ok-label 'Proximo' \
--nocancel --inputbox 'LOGIN:' 7 30 )
}
Senha () {
resp=1
while [ $resp -eq 1 ]; do
txt_senha=$( dialog --stdout --backtitle "$lb_janela" --title 'DIGITACAO SENHA' --ok-label 'Proximo' \
--nocancel --insecure --passwordbox "DIGITE UMA SENHA:" 7 50 )
if [ -z $txt_senha ]; then
dialog --backtitle "$lb_janela" --title 'SENHA INVALIDA' --ok-label 'Ok' --nocancel \
--msgbox "Senha deve ter no minimo 5 caracteres!!" 7 50
else
txt_confsenha=$( dialog --stdout --backtitle "$lb_janela" --title 'CONFIRMA SENHA' \
--ok-label 'Proximo' --nocancel --insecure --passwordbox "CONFIRME A SENHA:" 7 50 )
if [ $txt_senha == $txt_confsenha ]; then
resp=0
else
dialog --backtitle "$lb_janela" --title 'ERRO CONFERENCIA' --ok-label 'Ok' \
--nocancel --msgbox "Senha deve ser igual na digitacao e redigitacao!!" 7 40
fi
fi
done
}
msgCadastrado () {
dialog --backtitle "$lb_janela" --title 'CONCLUIDO' --ok-label 'Concluir' \
--msgbox "Cadastro do login \"$txt_login\" efetuado com sucesso!!" 7 60
Menu
}
msgNaoCadastrado () {
dialog --backtitle "$lb_janela" --title 'TROCA DE SENHA' --ok-label 'Ok' --nocancel \
--msgbox "Usuario \"$txt_login\" nao cadastrado!!" 7 50
}
msgInvalido () {
dialog --backtitle "$lb_janela" --title 'USUARIO INVALIDO' --ok-label 'Ok' --nocancel \
--msgbox "Usuario NAO pode ser \"root\" ou \"em branco\"!!" 7 50
}
Menu
Criar imagem ISO a partir de CD
Script para instalação de um servidor web
CoDe_X - Compactador/Descompactador de arquivos e diretórios usando Xdialog
Nenhum comentário foi encontrado.
Fscrypt: protegendo arquivos do seu usuário sem a lentidão padrão de criptograr o disco
Faça suas próprias atualizações de pacotes/programas no Void Linux e torne-se um Contribuidor
Como rodar o Folding@home no Linux
Criando um painel de controle (Dashboard) para seu servidor com o Homepage
O Abismo entre o Código e o Chão: Saltos Tecnológicos e a Exclusão Estrutural no Brasil
Utilizando a Ferramenta xcheckrestart no Void Linux
Pisando no acelerador do Linux Mint: Kernel XanMod, zRAM e Ajustes de Swap
Como compilar kernel no Linux Mint
Abrir um arquivo URL pelo Clipper (8)
Seno, Coseno, Tangente em CLIPPER (1)
Inserir uma URL num arquvo pelo Ubuntu (CLIPPER) (0)
VMWare Player não conecta na rede nem consigo intercambiar arquivos (1)









