Administrar squid com autenticação, simples e objetivo.
Publicado por gelber de arruda junior 22/05/2009
[ Hits: 8.580 ]
Homepage: http://gelberarrudajr.blogspot.com
Este script nos ajudará de forma bem simples e objetiva a fazer as tarefas mais comuns como adicionar/excluir usuário, definir a senha do usuário, adicionar e remover sites proibidos, permitidos e sites para o horário de almoço.
Para mais informações sobre o script e para tirar o máximo de proveito dele, acesse http://gelberarrudajr.blogspot.com/2009/05/artigo-squid-com-autenticacao-manual.html
Espero ajudar!!!
#!/bin/bash # Autor: Gelber de Arruda Junior juniorwinfor@yahoo.com.br # Data: 15/05/2009 # Função do Script: Administrar squid com autenticação # # Este programa é um software livre que pode ser copiado e distribuído # nos termos da Licença Pública Geral GNU (GNU General Public License - # GPL) versão 2 da licença ou, a seu critério, qualquer versão posterior. # Este programa foi criado na expectativa de ser útil, porém NÃO POSSUI # NENHUMA GARANTIA, EXPRESSA, IMPLÍCITA OU DE ATENDIMENTO A ALGUMA # DETERMINADA FINALIDADE. Usuariosliberados=/etc/squid/usuariosliberados Usuarioslimitados=/etc/squid/usuarioslimitados Usuariosexcecao=/etc/squid/usuariosexcecao Sitesperm=/etc/squid/sitespermitidos Sitespro=/etc/squid/sitesproibidos Sitesupdates=/etc/squid/updates Siteshappy=/etc/squid/almoco Arqusu=/etc/squid/cadusuarios Arqsenhas=/etc/squid/autenticacao Listusu="$Arqusu" TMPFILE1=/tmp/tmp1 TMPFILE2=/tmp/tmp2 TMPFILE3=/tmp/tmp3 TMPFILE4=/tmp/tmp4 Squidmenu() { while : ; do resposta= resposta=$( dialog --stdout \ --title 'Administração de Navegação' \ --ok-label 'OK' \ --cancel-label 'Voltar' \ --menu 'Opções:' 0 0 0 1 'Exibir Listagem' 2 'Manipular Usuários' 3 'Sites de Updates' 4 'Sites Liberados' \ 5 'Sites Bloqueados' 6 'Sites Almoço' 7 'SquidView' 9 'Aplicar' ) [ $? -ne 0 ] && break case "$resposta" in 1) Mostrarlistagem ;; 2) titulo="Usuários" listusu=$Arqusu Manipusu ;; 3) titulo=Sites_de_Updates listsite=$Sitesupdates Manipsites ;; 4) titulo="Sites_Permitidos" listsite=$Sitesperm Manipsites ;; 5) titulo="Sites_Bloqueados" listsite=$Sitespro Manipsites ;; 6) titulo="Sites_Almoço" listsite=$Siteshappy Manipsites ;; 7) squidview ;; 9) Aplicalist ;; 0) break ;; esac done } Manipusu() { while : ; do [ -s "$listusu" ] || echo "usuario|limitado|senha" >> $listusu resposta3=$( \ dialog --stdout \ --title ''$titulo'' \ --ok-label 'Adicionar' \ --extra-button \ --extra-label 'Editar' \ --cancel-label 'Voltar' \ --menu '' 0 60 0 \ $(for lnusu in `cat $listusu`; do nmusu=`echo $lnusu | awk -F "|" '{print $1}'` catusu=`echo $lnusu | awk -F "|" '{print $2}'` echo "$nmusu $catusu" done)) bt="$?" case "$bt" in 0) usuadicionando=$( dialog --stdout \ --title 'Adicionar Usuários' \ --ok-label 'Adicionar' \ --cancel-label 'Cancelar' \ --inputbox 'Digite o novo usuário a ser adicionado:' \ 0 0 ) if [ -z "$usuadicionando" ]; then sleep 0 else senhaadicionando=$( dialog --stdout \ --title 'Senha:' \ --ok-label 'OK' \ --cancel-label 'Cancelar' \ --inputbox 'Digite uma senha para o novo usuário:' \ 0 0 ) if [ -z "$senhaadicionando" ]; then sleep 0 else echo "$usuadicionando|Limitado|$senhaadicionando" >> $listusu fi fi ;; 1) break ;; 3) resposta2= resposta2=$( dialog --stdout \ --title 'Editar Usuário' \ --ok-label 'OK' \ --cancel-label 'Voltar' \ --menu 'Selecione uma opção para o Usuário '$resposta3'' 0 0 0 1 'Definir Senha' 2 'Definir Categoria' \ 3 'Excluir' ) if [ $? -ne 0 ]; then sleep 0 else case "$resposta2" in 1) senhaeditando=$( dialog --stdout \ --title 'Senha:' \ --ok-label 'OK' \ --cancel-label 'Cancelar' \ --inputbox 'Digite uma senha para o usuário '$resposta3':' \ 0 0 "$senhausu" ) if [ -z "$senhaeditando" ]; then sleep 0 else [ -e $TMPFILE1 ] && rm $TMPFILE1 for lnusu in `cat $listusu`; do nmusu=`echo $lnusu | awk -F "|" '{print $1}'` catusu=`echo $lnusu | awk -F "|" '{print $2}'` senhausu=`echo $lnusu | awk -F "|" '{print $3}'` if [ "$nmusu" = "$resposta3" ]; then echo "$nmusu|$catusu|$senhaeditando" >> $TMPFILE1 else echo $lnusu >> $TMPFILE1 fi done senhausu= mv $TMPFILE1 $listusu fi ;; 2) Defcategusu ;; 3) [ -e $TMPFILE4 ] && rm $TMPFILE4 dialog \ --title 'Confirma exclusão?' \ --yesno "Tem certeza que deseja excluir o usuário "$resposta3"? " 0 0 if [ "$?" -ne 0 ]; then sleep 0 else egrep -v "$resposta3" $Arqusu > $TMPFILE4 mv $TMPFILE4 $Arqusu fi ;; esac fi ;; esac done } Mostrarlistagem() { echo " Usuário | Categoria | Senha |" > $TMPFILE3 echo " | | |" >> $TMPFILE3 for cli in `cat $Arqusu`; do echo $cli | awk -F "|" '{printf"%15s | %13s | %14s |\n" ,$1,$2,$3}' >> $TMPFILE3 done echo "" >> $TMPFILE3 dialog \ --title 'Listagem de Usuários' \ --textbox $TMPFILE3 \ 0 0 } Defcategusu() { [ -s "$listusu" ] || echo "usuario|senha" >> $listusu resposta4= resposta4=$( dialog --stdout \ --title 'Categoria de Usuário' \ --ok-label 'OK' \ --cancel-label 'Sair' \ --menu 'Selecione uma categoria para o usuário '$resposta3'' 0 0 0 1 'Limitado' \ 2 'Exceção' 3 'Liberado' ) [ $? -ne 0 ] && break [ -e $TMPFILE2 ] && rm $TMPFILE2 for lnusucad in `cat $Arqusu`; do senhausu=`echo "$lnusucad" | awk -F "|" '{print $3}'` catcli=`echo "$lnusucad" | awk -F "|" '{print $2}'` clinome=`echo "$lnusucad" | awk -F "|" '{print $1}'` if [ "$clinome" = "$resposta3" ]; then [ "$resposta4" = "1" ] && echo "$clinome|Limitado|$senhausu" >> $TMPFILE2 [ "$resposta4" = "2" ] && echo "$clinome|Exceção|$senhausu" >> $TMPFILE2 [ "$resposta4" = "3" ] && echo "$clinome|Liberado|$senhausu" >> $TMPFILE2 else echo "$lnusucad" >> $TMPFILE2 fi done mv $TMPFILE2 $Arqusu } Aplicalist() { echo "NenhumNomePodeSerCompatívelcomEssaLinha93453489347" > $Usuariosliberados echo "NenhumNomePodeSerCompatívelcomEssaLinha93453489347" > $Usuarioslimitados echo "NenhumNomePodeSerCompatívelcomEssaLinha93453489347" > $Usuariosexcecao [ -e $Arqsenhas ] && rm $Arqsenhas touch $Arqsenhas for linecli in `cat $Arqusu`; do senhausu=`echo "$linecli" | awk -F "|" '{print $3}'` catcli=`echo "$linecli" | awk -F "|" '{print $2}'` clinome=`echo "$linecli" | awk -F "|" '{print $1}'` [ "$catcli" = "Liberado" ] && echo "$clinome" >> $Usuariosliberados [ "$catcli" = "Limitado" ] && echo "$clinome" >> $Usuarioslimitados [ "$catcli" = "Exceção" ] && echo "$clinome" >> $Usuariosexcecao param= [ -s "$Arqsenhas" ] || param="-c" htpasswd -b $param $Arqsenhas $clinome $senhausu clear done squid -k reconfigure } Manipsites() { [ -s "$listsite" ] || echo "www.sitecadastrado.com" >> $listsite catt= while : ; do resposta3=$( \ dialog --stdout \ --title ''$titulo'' \ --ok-label 'Adicionar' \ --extra-button \ --extra-label 'Remover' \ --cancel-label 'Voltar' \ --menu '' 30 70 27 \ $(for st in `cat $listsite`; do mostrar=`echo $st | awk -F "|" '{print $1}'` catt=`echo $st | awk -F "|" '{print $2}'` [ -z "$catt" ] && catt="-" echo "$mostrar" "$catt" done)) bt="$?" case "$bt" in 0) siteadding=$( dialog --stdout \ --title 'Adicionar Site' \ --ok-label 'Adicionar' \ --cancel-label 'Cancelar' \ --inputbox 'Digite o novo site a ser adicionado:' \ 0 0 ) if [ -z "$siteadding" ]; then sleep 0 else echo $siteadding >> $listsite fi ;; 1) break ;; 3) dialog \ --title 'Confirma exclusão?' \ --yesno "Tem certeza que deseja excluir o site "$resposta3"? " 0 0 if [ "$?" -ne 0 ]; then sleep 0 else egrep -v "$resposta3" $listsite > $TMPFILE4 mv $TMPFILE4 $listsite fi ;; esac done } Squidmenu
Firewall para Compartilhamento de Conexão 3G
Instalação e configuração do celular Nokia 6670 no Ubuntu 8.10
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (3)
É cada coisa que me aparece! - não é só 3% (3)
Melhorando a precisão de valores flutuantes em python[AJUDA] (5)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta