Script para controle do Squid e firewall
Publicado por Sérgio Abrantes Junior 10/07/2008
[ Hits: 6.903 ]
Homepage: https://br.linkedin.com/in/sergioabrantes
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
#!/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
Compilando o apache2.2 com php5 e mysql5.1 no slackware
Script de backup para Gravador CD-R ou CD-Rw
Gera estatísticas de tráfego de pacotes nas interfaces de um servidor linux via SNMPv3.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)