Administrar squid com autenticação, simples e objetivo.
Publicado por gelber de arruda junior 22/05/2009
[ Hits: 8.470 ]
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
Pós instalação para Debian 10, Ubuntu 18.04, Ubuntu 20.04, Fedora 31/Fe
Repasse de parâmetros de um script a outro
Atenção a quem posta conteúdo de dicas, scripts e tal (1)
Manutenção de sistemas Linux Debian e derivados com apt-get, apt, aptitude e dpkg
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
Instalar a última versão do PostgreSQL no Lunix mantendo atualizado
Flathub na sua distribuição Linux e comandos básicos de gerenciamento
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Desenvolvimento de um driver (8)
Não esta salvando as configurações de usuário. (3)
Quais Shell Scripts vocês usam? (5)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba