Gerenciamento de usários do Squid usando Dialog

Publicado por Paulo Oliveira Reis 04/09/2006

[ Hits: 8.427 ]

Download admin-proxy.sh




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

  



Esconder código-fonte

#!/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

Scripts recomendados

Remover e-mails com MX inexistente e status deferred em servidores Postfix

zswapdeslig.sh - Um "Desligador" de ZSWAP, SWAP em RAM para Sabayon Linux

Verificar e efetua o download da nova versão do antivirus McAfee

DNSGEN - Gera e mantém configurações dos servidores DNS

Backup-Script


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts