Gerenciamento de usários do Squid usando Dialog
Publicado por Paulo Oliveira Reis 04/09/2006
[ Hits: 8.767 ]
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
Nenhum comentário foi encontrado.
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Linux é a solução para o fim do Windows10? [RESOLVIDO] (6)
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (0)
Programa fora de escala na tela do pc (29)









