Script para controle do Squid e firewall

Publicado por Sérgio Abrantes Junior 10/07/2008

[ Hits: 7.091 ]

Homepage: https://br.linkedin.com/in/sergioabrantes

Download gerenciador.txt




Fiz esse script para o cliente conseguir fazer alterações sem ter acesso ao sistema por um shell.

Mudei o arquivo /etc/passwd conforme abaixo:

De sergio:x:1000:100:,,,:/home/sergio:/bin/bash
Para sergio:x:1000:100:,,,:/home/sergio:/sbin/gerenciador

Assim quando ele colocar o login e senha, cairá diretamente no menu. Necessário alterar também as variáveis do script.

Não tenho muito espaço para comentar 500 caracteres apenas :/

Qualquer dúvida comentem

Sérgio Abrantes

[]'s

  



Esconder código-fonte

#!/bin/bash
##############################################################################################
#       Gerenciador é um programa feito para ajudar no gerenciamento do squid e firewall.    #
#       Apresenta um menu onde o usuário pode escolher entre visualizar e alterar os dados   #
#       dos arquivos de configuração.                                                        #
##############################################################################################
#
# Autor: Sérgio Abrantes
# E-mail: sergioabrantes@gmail.com
# Data da criação: 05/01/08

###########################
# Declaração de variáveis #
###########################

# Variáveis das opcaoes 3 e 4 = Visualizar sites / Alterar sites
squid_conf=/usr/local/squid/etc/squid.conf
sites_orkut=/usr/local/squid/conf/sites_orkut
sites_fotolog=/usr/local/squid/conf/sites_fotolog
sites_permitidos=/usr/local/squid/conf/sites_permitidos
sites_putaria=/usr/local/squid/conf/sites_putaria
sites_bloqueados=/usr/local/squid/conf/sites_bloqueados
sites_musica_video=/usr/local/squid/conf/sites_musica_video
sites_email=/usr/local/squid/conf/sites_email

# Variáveis das opcoes 5 e 6 = Visualizar palavras / alterar palavras
palavras_orkut=/usr/local/squid/conf/palavras_orkut
palavras_fotolog=/usr/local/squid/conf/palavras_fotolog
palavras_putaria=/usr/local/squid/conf/palavras_putaria
palavras_bloqueadas=/usr/local/squid/conf/palavras_bloqueadas
palavras_musica_video=/usr/local/squid/conf/palavras_musica_video

# ACL com o conteudo dos usuarios
users_liberados=/usr/local/squid/conf/users_liberados
users_lista1=/usr/local/squid/conf/users_lista1
users_lista2=/usr/local/squid/conf/users_lista2
users_geral=/usr/local/squid/conf/users_geral
# Arquivo de senha #
arq_passwd=/usr/local/squid/etc/passwd

# Arquivo do firewall
arq_fire=/etc/rc.d/rc.firewall

# Loop que mostra o menu principal
while : ; do

   # Mostra o menu na tela, com as ações disponíveis
   resposta=$(
     dialog --stdout               \
            --title 'Gerenciador do Squid'  \
            --menu 'Escolha uma das opções abaixo:' \
           0 0 0                   \
           1 'Visualizar o squid.conf' \
           2 'Alterar o squid.conf' \
           3 'Visualizar Sites'  \
           4 'Alterar Sites'  \
           5 'Visualizar Palavras'  \
           6 'Alterar Palavras'  \
           7 'Adicionar ou mudar a senha de  Usuarios'  \
           8 'Remover Usuarios'  \
           9 'Listar usuários cadastrados'  \
           10 'Visualizar Firewall'  \
           11 'Editar o Firewall'  \
           12 'Firewall START ( Validar )'  \
           13 'Firewall STOP ( Funcionando o minimo )'  \
           14 'Validar configurações do Squid'  \
           15 'Visualiazar ACL de usuarios'  \
           16 'Alterar ACL de usuarios'  \
           0 'Sair'                )

   # Ela apertou CANCELAR ou ESC, então vamos sair...
   [ $? -ne 0 ] && break
 # De acordo com a opção escolhida, dispara programas
   case "$resposta" in
        1)     dialog                                        \
                  --title 'Visualizando Arquivo'             \
                  --textbox $squid_conf  \
                  0 0

        ;;
        2) mcedit $squid_conf ;;
        3) visualizar_sites=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Permitidos'     'Que todos podem acessar'   OFF \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com conteúdo adulto'    OFF \
               'Email'  'Sites com música e vídeos'    OFF )

                        if [ $visualizar_sites == "Proibidos" ]; then
                               dialog \
                                       --title 'Arquivo de sites proibidos' \
                                       --textbox $sites_bloqueados  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Permitidos" ]; then
                               dialog  \
                                       --title 'Arquivo de sites Permitidos' \
                                       --textbox $sites_permitidos  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Orkut" ]; then
                               dialog \
                                       --title 'Arquivo de sites Orkut' \
                                       --textbox $sites_orkut  \
                                       0 0
                        fi
 if [ $visualizar_sites == "Pornografia" ]; then
                               dialog  \
                                       --title 'Arquivo de sites de conteudo adulto' \
                                       --textbox $sites_putaria  \
                                       0 0
                        fi

                        if [ $visualizar_sites == "Fotolog" ]; then
                               dialog  \
                                       --title 'Arquivo de sites de Fotologs e blogs' \
                                       --textbox $sites_fotolog  \
                                       0 0
                       fi

                       if [ $visualizar_sites == "Musica-Video" ]; then
                               dialog  \
                                       --title 'Arquivo de sites com musica e videos' \
                                       --textbox $sites_musica_video  \
                                       0 0
                       fi

                       if [ $visualizar_sites == "Email" ]; then
                               dialog  \
                                       --title 'Arquivo de sites com musica e videos' \
                                       --textbox $sites_email  \
                                       0 0
                       fi

;;
        4)alterar_sites=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Permitidos'     'Que todos podem acessar'   OFF \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com música e vídeos'    OFF \
               'Email'          'Sites de E-mail'    OFF )

                        if [ $alterar_sites == "Proibidos" ]; then
                                mcedit $sites_bloqueados
                        fi

                        if [ $alterar_sites == "Permitidos" ]; then
                                mcedit $sites_permitidos
                        fi

                        if [ $alterar_sites == "Orkut" ]; then
                                mcedit $sites_orkut
                        fi

                        if [ $alterar_sites == "Pornografia" ]; then
                                mcedit $sites_putaria
                        fi

                        if [ $alterar_sites == "Fotolog" ]; then
                                mcedit $sites_fotolog
                        fi


                        if [ $alterar_sites == "Musica-Video" ]; then
                                mcedit $sites_musica_video
                        fi

                        if [ $alterar_sites == "Email" ]; then
                                mcedit $sites_email
                        fi

        ;;
 5)visualizar_palavras=$(dialog --stdout \
               --radiolist 'Escolha as palavras que deseja visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Orkut'          'Para Site de relacionamento'           OFF \
               'Pornografia'    'Para Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Para Sites com música e vídeos'    OFF )

                        if [ $visualizar_palavras == "Proibidos" ]; then
                               dialog \
                                       --title 'Arquivo de palavras proibidos' \
                                       --textbox $palavras_bloqueadas  \
                                       0 0
                        fi


                        if [ $visualizar_palavras == "Orkut" ]; then
                               dialog \
                                       --title 'Arquivo de palavras Orkut' \
                                       --textbox $palavras_orkut  \
                                       0 0
                        fi

                        if [ $visualizar_palavras == "Pornografia" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras de conteudo adulto' \
                                       --textbox $palavras_putaria  \
                                       0 0
                        fi

                        if [ $visualizar_palavras == "Fotolog" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras de Fotologs e blogs' \
                                       --textbox $palavras_fotologs  \
                                       0 0
                       fi

                       if [ $visualizar_palavras == "Musica-Video" ]; then
                               dialog  \
                                       --title 'Arquivo de palavras com musica e videos' \
                                       --textbox $palavras_musica_video  \
                                       0 0
                       fi

;;
6)alterar_palavras=$(dialog --stdout \
               --radiolist 'Escolha os sites a visualizar' 0 0 0 \
               'Proibidos'      'Que não se encaixam a nenhuma outra regra' ON  \
               'Orkut'          'Site de relacionamento'           OFF \
               'Pornografia'    'Sites com conteúdo adulto'    OFF \
               'Musica-Video'   'Sites com música e vídeos'    OFF )

                        if [ $alterar_palavras == "Proibidos" ]; then
                                mcedit $palavras_bloqueadas
                        fi

                        if [ $alterar_palavras == "Permitidos" ]; then
                                mcedit $palavras_permitidos
                        fi

                        if [ $alterar_palavras == "Orkut" ]; then
                                mcedit $palavras_orkut
                        fi

                        if [ $alterar_palavras == "Pornografia" ]; then
                                mcedit $palavras_putaria
                        fi

                        if [ $alterar_palavras == "Fotolog" ]; then
                                mcedit $palavras_fotolog
                        fi
                        if [ $alterar_palavras == "Musica-Video" ]; then
                                mcedit $palavas_musica_video
                        fi


        ;;
7)
                        # Pergunta o nome
                        dialog --inputbox 'Digite o nome do usuario :' 0 0  2>/tmp/nome.txt
                        nome=$( cat /tmp/nome.txt )

                        # Pergunta a senha
                        dialog --inputbox 'Digite a senha do usuario :' 0 0  2>/tmp/senha.txt
                        senha=$( cat /tmp/senha.txt )
                        htpasswd -b $arq_passwd $nome $senha > /tmp/log_gerenciador 2>&1

                        # Verifica status do comando
                                comando=$(cat /tmp/log_gerenciador |egrep Updating|wc -l)
                                if [ $comando == 1 ]; then
                                        dialog --msgbox 'Atualizado senha do usuario' 5 40
                                fi
                                comando=$(cat /tmp/log_gerenciador |egrep Adding|wc -l)
                                if [ $comando == 1 ]; then
                                        dialog --msgbox 'Adicionado usuario' 5 40
                                fi
                        # Apaga arquivos temporiarios
                        rm -rf /tmp/senha.txt
                        rm -rf /tmp/nome.txt
                        rm -rf /tmp/log_gerenciador

                ;;

        8)

                        # Pergunta o nome
                        dialog --inputbox 'Digite o nome do usuario a ser removido :' 0 0  2>/tmp/nome.txt
                        nome=$( cat /tmp/nome.txt )

                        # Verifica status do comando
                                comando=$(cat /usr/local/squid/etc/passwd |egrep $nome|wc -l)
                                if [ $comando == 1 ]; then
                                        htpasswd -D /usr/local/squid/etc/passwd $nome
                                        dialog --msgbox 'Usuario removido' 5 40
                                fi
                                comando=$(cat $arq_passwd |egrep $nome|wc -l)
                                if [ $comando == 0 ]; then
                                        dialog --msgbox 'Usuario nao existe' 5 40
                                fi
                        # Apaga arquivos temporiarios
                        rm -rf /tmp/senha.txt
                        rm -rf /tmp/nome.txt
                        rm -rf /tmp/log_gerenciador
                ;;

        9)
                        cat $arq_passwd |cut -d : -f 1 > /tmp/users.txt
                        dialog  \
                        --title 'Visualizando Arquivo' \
                        --textbox /tmp/users.txt  \
                        0 0
                        rm -rf /tmp/users.txt
                        ;;

        10)
             dialog  \
                  --title 'Visualizando Arquivo' \
                  --textbox $arq_fire  \
                  0 0

        ;;
        11) mcedit $arq_fire ;;
12)
                /etc/rc.d/rc.firewall start
                dialog --msgbox 'Firewall iniciado / reiniciado' 5 40

        ;;
        13)
                        /etc/rc.d/rc.firewall stop
                dialog --msgbox 'Firewall funcionando somente o minimo' 5 40

        ;;

        14)
                      /usr/local/squid/sbin/squid -k reconfigure
                dialog --msgbox 'Squid esta lendo agora as novas configurações' 5 40
        ;;

15)alterar_acls=$(dialog --stdout \
               --radiolist 'Escolha quais ACL visualizar' 0 0 0 \
               'Liberados'      'Usuarios com acesso total' ON  \
               'Geral'          'Usuarios nas regras gerais'   OFF \
               'Lista1'         'Lista personalizada 1'           OFF \
               'Lista2'         'Lista personalizada 2'    OFF )

                        if [ $alterar_acls == "Liberados" ]; then
                               dialog \
                                       --title 'Usuarios liberados' \
                                       --textbox $users_liberados  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Geral" ]; then
                               dialog \
                                       --title 'Usuarios geral' \
                                       --textbox $users_geral  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Lista1" ]; then
                               dialog \
                                       --title 'Usuarios lista 1' \
                                       --textbox $users_lista1  \
                                       0 0
                        fi

                        if [ $alterar_acls == "Lista2" ]; then
                               dialog \
                                       --title 'Usuarios da lista 2' \
                                       --textbox $users_lista2  \
                                       0 0
                        fi


        ;;

    16)alterar_acls=$(dialog --stdout \
               --radiolist 'Escolha quais ACL alterar' 0 0 0 \
               'Liberados'      'Usuarios com acesso total' ON  \
               'Geral'          'Usuarios nas regras gerais'   OFF \
               'Lista1'        'Lista personalizada 1'           OFF \
               'Lista2'        'Lista personalizada 2'    OFF )

                        if [ $alterar_acls == "Liberados" ]; then
                                       mcedit $users_liberados
                        fi

                        if [ $alterar_acls == "Geral" ]; then
                                      mcedit $users_geral
                        fi

                        if [ $alterar_acls == "Lista1" ]; then
                                       mcedit $users_lista1
                        fi

                        if [ $alterar_acls == "Lista2" ]; then
                                       mcedit $users_lista2
                        fi

        ;;

        0) break ;;

   esac

done

# Mensagem final :)
clear
echo ''
echo ''
echo ''
echo 'Obrigado por usar o servidor configurado por Sérgio Abrantes'
echo 'Dúvidas ou sugestões entre em contato com o seguinte e-mail:'
echo 'sergioabrantes@gmail.com'
echo ''
echo ''
echo ''
#sleep 2
                 

Scripts recomendados

Gravar DVDs no Linux pelo Cron

Verificar conexão com Internet

Verificar atividade de serviços no Tomcat

Ver último twitter pelo terminal ou na barra de notificação

INSTALADOR TAR GZ


  

Comentários
[1] Comentário enviado por smrabelo em 10/07/2008 - 10:19h

Pelo que vi, ficou muito bom seu gerenciador, vou testá-lo! =)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts