Administrar squid com autenticação, simples e objetivo.
Publicado por gelber de arruda junior 22/05/2009
[ Hits: 8.864 ]
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 COM IPTABLES - PARA INTERNET DISCADA E ADSL
Criação de usuario / gerando senha automatica
Script de Backup que compacta Segmentado.
Converter Imagens e Documentos para PDF
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
Instalar Linux em notebook Sony Vaio VPCEG13EB (10)
Vou destruir sua infância:) (6)
Quando vocês pararam de testar distros? (24)









