Administrar squid com autenticação, simples e objetivo.
Publicado por gelber de arruda junior 22/05/2009
[ Hits: 8.840 ]
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
Script de busca (google em shell)
Removendo carácter especial de arquivos recursivamente
SSSR - configure Samba no Damn Small Linux e DSL-N
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (15)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









