Gerência do Squid
Publicado por Jonathan Lessa (última atualização em 29/06/2011)
[ Hits: 7.940 ]
Gerenciando o Squid com opções de adicionar/remover usuários, bloquear/liberar sites, verificar status da conexão, verificar status do squid, limpar o cache do squid.
*** Descomentar as linhas abaixo no squid.conf:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/conf/pass.geral
auth_param basic children 5
auth_param basic realm Proxy InfoNet
*** Adicionar as linhas abaixo no squid.conf:
###
#Definindo acls para o script de Manutencao
###
acl sites_liberados_restrito url_regex "/etc/squid/conf/sites_liberados_Restrito"
acl palavras_liberadas_restrito url_regex "/etc/squid/conf/palavras_liberadas_Restrito"
acl sites_bloqueados_restrito2 dstdom_regex "/etc/squid/conf/sites_bloqueados_Restrito2"
acl sites_liberados_geral url_regex "/etc/squid/conf/sites_liberados_Geral"
acl sites_bloqueados_geral url_regex "/etc/squid/conf/sites_bloqueados_Geral"
###
#Definindo acls dos grupos
###
acl gerencia proxy_auth "/etc/squid/conf/users_Gerencia"
acl restrito proxy_auth "/etc/squid/conf/users_Restrito"
acl restrito2 proxy_auth "/etc/squid/conf/users_Restrito2"
http_access allow MAONET gerencia
http_access allow MAONET sites_liberados_geral
http_access deny MAONET sites_bloqueados_geral
http_access allow MAONET restrito2 !sites_bloqueados_restrito2
http_access allow MAONET restrito sites_liberados_restrito
http_access allow MAONET restrito palavras_liberadas_restrito
*** {01.00.001} Comandos a serem executados para devido funcionamento do script
>/etc/squid/conf/sites_liberados_Restrito
>/etc/squid/conf/palavras_liberadas_Restrito
>/etc/squid/conf/sites_bloqueados_Restrito2
>/etc/squid/conf/sites_liberados_Geral
>/etc/squid/conf/sites_bloqueados_Geral
>/etc/squid/conf/users_Gerencia
>/etc/squid/conf/users_Restrito
>/etc/squid/conf/users_Restrito2
chmod 777 /etc/squid/conf/sites_*
chmod 777 /etc/squid/conf/users_*
chmod 777 /etc/squid/conf/palavras_liberadas_Restrito
htpasswd -bc /etc/squid/conf/pass.geral infonet teste
mkdir /var/log/manutencao
>/var/log/manutencao/manutencao.log
chmod -R 777 /var/log/manutencao
mkdir /etc/squid/bkp/
chmod 777 /etc/squid/bkp/
groupadd webmaster
useradd manutencao -g webmaster
passwd manutencao SENHA_DO_USUARIO_MANUTENCAO
Obs.: Caso o IP que esteja aparecendo esteja errado no menu 9, será necessário alterar no script a linha abaixo, informando a interface de conexão correta:
internet=ppp0
*** Descrição dos Grupos: ***
Gerencia: tem acesso a irrestrito
Restrito: tem acesso somente aos sites cadastrados como liberados
Restrito2: tem acesso a todos os sites, exceto os cadastrados como bloqueados
#!/bin/bash
#Srcipt para manutencao de usuarios/grupos e controle de acesso SQUID
#Autor: Jonathan Lessa -InfoNet - Solucoes Internet
#Data: 17/05/2010
#Definicao de variaveis
arqusuarios="/etc/squid/conf/pass.geral"
dirusuarios="/etc/squid/conf/"
dirbackupusuarios="/etc/squid/bkp/"
logfile=/var/log/manutencao/manutencao.log
internet=ppp0
opcao=
grupos[0]="Gerencia"
grupos[1]="Restrito"
grupos[2]="Restrito2"
#grupos[3]="MsnBloqueado"
function listarGrupos() {
i=0;
for grupo in ${grupos[@]}
do
((++i));
echo "$i) - $grupo";
done
}
while true
do
clear
echo " InfoNet - Solucoes Internet
Script para manutencao de usuarios e controle de acesso SQUID
Selecione a opcao desejada:
1 - Cadastrar usuario
2 - Alterar usuario
3 - Excluir usuario
4 - Listar usuarios
5 - Bloquear site
6 - Liberar/Desloquear site
7 - Listar sites Liberados/Bloqueados
8 - Manutencao do SQUID
9 - Status do sistema
0 - Sair"
tput cup 18 0; tput el; read -p "Opcao: " opcao;
# [[ $opcao == 0 ]] && break;
i=0
existe=
clear;
case "$opcao" in
1 ) echo "Cadastro e Usuario";
echo "==================";
echo "";
read -p "Digite o nome do usuario: " usuario1;
usuario=$(eval echo $usuario1 | tr [[:upper:]] [[:lower:]])
#existe=$( grep ^$usuario':' "$arqusuarios");
grep ^$usuario':' "$arqusuarios";
(( $? != 0)) && {
read -p "Digite a senha do usuario: " senha;
echo "";
echo "==================================";
echo "Selecione o gupo no qual deseja cadastrar o usuario:";
echo "==================================";
echo "$(listarGrupos)";
echo "0) - Cancelar cadastro"
read -p "Grupo: " opgrupo;
echo "";
case $opgrupo in
[1-${#grupos[@]}] ) {
grupo=${grupos[`eval echo $(( opgrupo - 1 ))`]};
arqgrupo=$dirusuarios"users_"$grupo;
eval htpasswd -b "$arqusuarios" "$usuario" "$senha" 1>/dev/null 2>/dev/null;
echo $usuario >> $arqgrupo;
echo $(date +%d%m%Y)" = cadastrado usuario: $usuario senha: $senha grupo: $grupo" >> $logfile;
echo Usuario "$usuario" cadastrado com sucesso!;
service squid reload 1>/dev/null 2>/dev/null;
};
;;
0 ) echo "Cadastro Cancelado!";
;;
* ) echo "Grupo invalido";
;;
esac;
} || {
echo "";
echo "Usuario ja existe";
};
echo "";
read -p "Pressione Enter para voltar para o menu principal" OK;
;;
2 ) echo "Alteracao de Usuario";
echo "====================";
echo "";
read -p "informe o login do usuario: " usuario;
grep '^'$usuario':' $arqusuarios 1>/dev/null 2>/dev/null;
(( $? != 0 )) && {
echo "";
echo "Usuario nao encontrado!";
} || {
clear;
echo Usuario $usuario encontrado. As alteracoes abaixo serao aplicadas a este usuario!
echo "====================";
(( $? == 0 )) && {
echo "Selecione uma das opcoes a seguir:";
echo "=================================="
echo "";
echo "1) Inserir usuario em grupo";
echo "2) Alterar usuario de grupo";
echo "3) Excluir usuario de grupo";
echo "4) Alterar senha de usuario";
echo "0) Voltar ao Menu Principal";
echo "";
read -p "Opcao: " opusuario;
case $opusuario in
1 ) clear;
echo "A qual Grupo deseja adicionar o usuario ($usuario)?";
echo "$(listarGrupos)";
echo "0) - Cancelar operacao"
read -p "Grupo: " opgrupo;
echo "";
echo "";
case $opgrupo in
[1-${#grupos[@]}] ) {
grupo=${grupos[`eval echo $(( opgrupo - 1 ))`]};
arqgrupo=$dirusuarios"users_"$grupo;
echo "";
grep '^'$usuario'$' $arqgrupo;
(( $? == 0 )) && {
echo "Este usuario ja esta neste grupo!";
} || {
echo $usuario >> $arqgrupo;
echo "$(date +%d%m%Y) = Usuario $usuario cadastrado no grupo: $grupo" >> $logfile;
echo "Usuario $usuario cadastrado no grupo $grupo";
};
};
service squid reload 1>/dev/null 2>/dev/null;
;;
0 ) echo "Operacao cancelada!";
;;
* ) echo "Opcao Invalida!";
;;
esac;
;;
2 ) clear;
echo "Migrando o usuario ($usuario) de Grupo:";
echo "============================";
echo "$(listarGrupos)";
echo "0) - Cancelar Operacao";
read -p "Grupo Atual: " opgrupoorigem;
case $opgrupoorigem in
[1-${#grupos[@]}] ) {
grupoo=${grupos[`eval echo $(( opgrupoorigem - 1 ))`]};
arqgrupoo=$dirusuarios"users_"$grupoo;
grep '^'$usuario'$' $arqgrupoo;
echo "";
(( $? != 0 )) && {
echo "Este usuario nao esta no grupo informado";
} || {
read -p "Novo Grupo : " opgrupodestino;
case $opgrupodestino in
[1-${#grupos[@]}] ) {
grupod=${grupos[`eval echo $(( opgrupodestino - 1 ))`]};
arqgrupod=$dirusuarios"users_"$grupod;
grep '^'$usuario'$' $arqgrupod 1>/dev/null 2>/dev/null;
(( $? == 0 )) && {
echo "";
echo "Este usuario ja esta no Novo Grupo";
} || {
eval sed -i.bkp$(date +%d-%m-%Y) /^$usuario$/d $arqgrupoo;
echo $usuario >> $arqgrupod;
echo $(date +%d%m%Y) " usuario $usuario movido do grupo $grupoo para o grupo $grupod" >> $logfile;
echo "";
echo "";
echo "Usuario $usuario movido do grupo $grupoo para o grupo $grupod";
};
};
service squid reload 1>/dev/null 2>/dev/null;
;;
0 ) echo "Operacao Cancelada!";
;;
* ) echo "Opcao Invalida";
;;
esac;
};
};
;;
0 ) echo "Operacao Cancelada!";
;;
* ) echo "Opcao Invalida";
;;
esac;
;;
3 ) clear;
clear;
echo "Excluindo o usuario ($usuario) de Grupo:";
echo "================================";
echo "$(listarGrupos)";
echo "0) - Cancelar Operacao"
read -p "Grupo: " opgrupo;
case $opgrupo in
[1-${#grupos[@]}] ) {
grupo=${grupos[`eval echo $(( opgrupo - 1 ))`]};
arqgrupo=$dirusuarios"users_"$grupo;
grep '^'$usuario'$' $arqgrupo 1>/dev/null 2>/dev/null;
(( $? == 0 )) && {
sed -i.bkp$(date +%d-%m-%Y) /^$usuario$/d $arqgrupo;
echo $(date +%d%m%Y) " usuario $usuario removido do grupo $grupo" >> $logfile;
echo "";
echo "";
echo "Usuario $usuario removido do grupo $grupo";
service squid reload 1>/dev/null 2>/dev/null;
} || {
echo"";
echo "Usuario nao encontrado neste Grupo!";
};
};
;;
0 ) echo "Operacao Cancelada!"
;;
* ) echo "Opcao invalida!";
;;
esac;
;;
4 ) clear;
echo "ALteracao de Senha";
echo "==================";
echo "";
echo "Usuario: $usuario";
read -p "Digite a nova senha: " senha;
htpasswd -b $arqusuarios $usuario $senha 1>/dev/null 2>/dev/null;
echo "$(date) => Senha do usuario $usuario alterada para $senha" >> $logfile;
echo "Senha Alterada!";
service squid reload 1>/dev/null 2>/dev/null;
;;
0 )
;;
* ) echo "Opcao Invalida";
;;
esac;
mv -f $dirusuarios*.bkp* $dirbackupusuarios 1>/dev/nulll 2>/dev/null;
};
};
echo "";
read -p "Pressione Enter para voltar para o menu principal" OK;
;;
3 ) echo "Exclusao de Usuario";
echo "==================";
echo "";
read -p "Digite o nome do usuario que deseja excluir: " usuario;
grep '^'$usuario':' $arqusuarios 1>/dev/null 2>/dev/null;
(( $? != 0 )) && {
echo "Usuario nao encontrado!";
} || {
read -p "Tem certeza que deseja excluir $usuario do acesso a internet? (S/n): " resp;
case $resp in
[sS] ) eval htpasswd -D $arqusuarios $usuario;
for arqgrupos in $(grep -r "^$usuario$" $dirusuarios | cut -d: -f1)
do
eval sed -i.bkp$(date +%d-%m-%Y) /^$usuario$/d $arqgrupos 1>/dev/null 2>/dev/null;
mv -f $dirusuarios"*.bkp*" $dirbackupusuarios 1>/dev/null 2>/dev/null;
done;
echo "" && echo "Usuario removido";
service squid reload 1>/dev/null 2>/dev/null;
;;
[nN] ) echo "" && echo Exclusao Cancelada;
;;
* ) echo "Opcao Invalida. Operacao cancelada." ;;
esac;
}
echo "";
read -p "Pressione Enter para voltar para o menu principal" OK;
;;
4 ) clear;
echo "Selecione o grupo para listar os usuarios"
echo "$(listarGrupos)";
echo "0) - Todos";
# while true
# do
read -p "Opcao: " opgrupo;
case "$opgrupo" in
[0-${#grupos[@]}] ) {
[ $opgrupo = 0 ] && {
clear
echo "====================";
echo "Listagem de Usuarios";
echo "====================";
echo "";
contgrupo=0;
for grupo in ${grupos[@]}
do
eval echo "Usuarios do grupo" ${grupos[$contgrupo]};
echo "-------------------------------";
eval cat -n "/etc/squid/conf/users_"${grupos[$contgrupo]};
echo "";
echo "-------------------------------";
(( ++contgrupo ));
(( $contgrupo == ${#grupos[@]} )) || { tput sc ; echo "Pressione Enter para listar o proximo Grupo" ; read ok ; tput rc; tput el; };
done;
} || {
clear;
echo "====================";
echo "Listagem de Usuarios";
echo "====================";
echo "";
echo "Usuarios do grupo" ${grupos[`eval echo $(( opgrupo -1 ))`]};
echo "--------------------------------";
cat -n $dirusuarios"users_"${grupos[`eval echo $(( opgrupo -1 ))`]};
echo "";
echo "--------------------------------";
};
};;
* ) echo "Opcao invalida!"
;;
esac;
echo "";
read -p "Pressione enter para voltar ao menu principal...";
;;
5 ) clear;
echo "Bloqueio de Site";
echo "================" && echo "";
echo "digite a URL a ser bloqueada (OBS.: Nao digite o 'www.' Ex.: playboy.com.br ou batepapo.uol.com.br)" && echo "";
read -p "Site: " opsite;
[[ -z $opsite ]] || {
echo "Selecione o grupo para efetuar o bloqueio do site"
echo "$(listarGrupos)";
echo "0) - Todos" && echo "";
read -p "Opcao: " opgrupo && echo "";
case "$opgrupo" in
[1-${#grupos[@]}] ) {
echo $opsite >> $dirusuarios"sites_bloqueados_""${grupos[`eval echo $(( opgrupo -1 ))`]}";
echo "$(date +%d%m%Y) => a URL $opsite foi bloqueada para o grupo ${grupos[`eval echo $(( opgrupo -1 ))`]}" >> $logfile;
echo "Site bloqueado para o grupo "${grupos[`eval echo $(( opgrupo -1 ))`]};
service squid reload 1>/dev/null 2>/dev/null;
};
;;
0 ) echo $opsite >> $dirusuarios"sites_bloqueados_Geral";
echo "Site $opsite inserido na lista de bloqueio geral!";
echo "$(date +%d%m%Y) => a URL $opsite foi bloqueada para todos os grupos" >> $logfile;
service squid reload 1>/dev/null 2>/dev/null;
;;
* ) echo "Opcao Invalida!";
;;
esac;
};
echo "" && read -p "Pressione enter para voltar ao menu principal...";
;;
6 ) clear;
echo "Liberar/Desbloquear Site";
echo "========================" && echo "";
echo "digite a URL a ser liberada/desbloqueada (OBS.: Nao digite o 'www.' Ex.: playboy.com.br ou batepapo.uol.com.br)" && echo "";
read -p "Site: " opsite;
[[ -z $opsite ]] || {
echo "$(listarGrupos)";
echo "0) - Todos" && echo "";
echo "Selecione o grupo para efetuar o desbloqueio/liberacao do site";
read -p "Grupo: " opgrupo && echo "";
case "$opgrupo" in
[1-${#grupos[@]}] ) {
grupo=${grupos[`eval echo $(( opgrupo -1 ))`]};
arqgrupo=$dirusuarios"sites_bloqueados_"$grupo;
eval sed -i.bkp$(date +%d-%m-%Y) /^$opsite$/d $arqgrupo;
echo "$(date +%d%m%Y) => a URL $opsite foi desbloqueada para o grupo $grupo" >> $logfile;
echo $opsite >> $dirusuarios"sites_liberados_"$grupo;
echo "Site liberado para o grupo $grupo";
service squid reload 1>/dev/null 2>/dev/null;
} ;;
0 ) {
eval sed -i.bkp$(date +%d%m%Y) /^$opsite$/d $dirusuarios"sites_bloqueados_Geral";
echo "$(date +%d%m%Y) => a URL $opsite foi desbloqueada para todos os gruposo" >> $logfile;
echo $opsite >> $dirusuarios"sites_liberados_Geral";
echo "Site liberado para todos!";
echo "$(date +%d%m%Y) => a URL $opsite foi liberada para todos os gruposo" >> $logfile;
service squid reload 1>/dev/null 2>/dev/null;
} ;;
* ) echo "Opcao Invalida!";
;;
esac;
mv -f $dirusuarios"*.bkp*" $arqbackupusuarios 1>/dev/null 2>/dev/null;
};
echo "" && read -p "Pressione Enter para voltar ao Menu Principal..";
;;
7 ) clear;
echo "Listagem de sites";
echo "=================";
echo "Deseja listar os sites (L)iberados ou (B)loqueados?";
read -p "Opcao: " oplistar;
echo "";
listar="";
case $oplistar in
[Ll] ) listar=liberados;
;;
[Bb] ) listar=bloqueados;
;;
* ) echo "Opcao Invalida";
esac;
[[ ! -z $listar ]] && {
echo "Selecione o grupo para listar os sites $listar";
echo "$(listarGrupos)";
echo "0) - Todos";
read -p "Opcao: " opgrupo;
case "$opgrupo" in
[1-${#grupos[@]}] ) {
grupo=${grupos[`eval echo $(( opgrupo -1 ))`]};
arqgrupo=$dirusuarios"sites_"$listar"_"$grupo;
echo ">>> Sites $listar para o grupo: $grupo";
echo "==============================";
more $arqgrupo;
echo "==============================" && echo "";
} ;;
0 ) {
echo ">>> Sites $listar Geral";
echo "==============================";
more $dirusuarios"sites_"$listar"_Geral";
echo "==============================" && echo "";
} ;;
* ) echo "Opcao Invalida!!!";
;;
esac;
};
echo "" && read -p "Pressione enter para voltar ao menu principal...";
;;
8 ) clear
echo "Manutencao do SQUID"
echo
echo "Selecione a opcao desejada:"
echo
# echo "1 - Gerar relatorio de acesso agora"
echo "1 - Limpar o cache"
echo "2 - Reiniciar o SQUID"
echo "3 - Parar o iptables"
echo "4 - Iniciar ou reiniciar o iptables"
echo "0 - Voltar ao menu principal"
read -p "Opcao: " op8;
case $op8 in
# 1 ) echo "Gerando relatorio... Aguarde!"
# data=`date -d yesterday "+%d/%m/%Y"`-`date "+%d/%m/%Y"`
# /usr/bin/sarg -i -f /etc/sarg/sarg-daily.conf -d $data
# echo "Operacao concluida" && sleep 2
# ;;
1 ) echo "Aguarde... limpando o cache do SQUID";
service squid stop;
rm -fr /var/spool/squid/*;
service squid start ;
echo "Cache excluido com sucesso!";
;;
2 ) echo "Aguarde... Reiniciando o SQUID"
service squid restart;
echo "SQUID reiniciado com sucesso";
;;
3 ) echo "Parando o iptables..."
service iptables stop 1>/dev/null 2>/dev/null && echo"";
echo "O iptables foi desligado";
;;
4 ) echo "Reiniciando o iptables"
/etc/rc.d/firewall.sh 1>/dev/null 2>/dev/null && echo"";
echo "O iptables foi inicializado";
;;
0 ) echo "Cancelando Operacao..."
;;
* ) echo "Opcao Invalida";
;;
esac;
echo "" && read -p "Pressione Enter para voltar ao Menu Principal";
;;
9 ) conexao=inativa
squid=parado
clear
echo "Obtendo Informacoes do sistema... Aguarde!"
#ifconfig | grep ppp0;
ping -c 2 200.241.52.1 | grep "100% packet loss" 1>/dev/null 2>/dev/null;
(( $? != 0)) && {
conexao=ativa;
ip=$(ifconfig $internet | grep inet | awk '{print $2}' | awk -F : '{print $2}');
} || {
echo "Aguarde! conectando..." && /etc/rc.d/velox_test.pl;
#ifconfig | grep ppp0;
ping -c 2 200.241.52.1 | grep "100% packet loss" 1>/dev/null 2>/dev/null;
(( $? != 0)) && {
conexao=ativa;
ip=$(ifconfig $internet | grep inet | awk '{print $2}' | awk -F : '{print $2}');
echo "Conexao estabelecida";
echo "IP da conexao: $ip";
};
};
echo "" && echo "Data do sistema: $(date +%A,\ %d\ de\ %B\ de\ %Y\ Hora:\ %H:%M)";
echo "" && echo "Status da conexao: $conexao";
[[ $conexao == "inativa" ]] && {
echo "" && echo "Nao foi possivel se comunicar com o servidor da InfoNet.";
echo "" && echo "Entre em contato com o Suporte Tecnico da InfoNet: (79) 2106-8000";
} || {
echo "" && echo "Conexao com a internet OK";
echo "IP da conexao: $ip";
};
echo "";
echo "-----------------"
echo "Analise do disco:";
echo "-----------------"
echo "Tamanho total do HD: $(df -h | sed 's/[ ]\+/:/g' | grep "/"$ | cut -d: -f2)";
echo "Espaco utilizado: $(df -h | sed 's/[ ]\+/:/g' | grep "/"$ | cut -d: -f3) = $(df -h | sed 's/[ ]\+/:/g' | grep "/"$ | cut -d: -f5) em uso";
echo "Espaco disponivel: $(df -h | sed 's/[ ]\+/:/g' | grep "/"$ | cut -d: -f4)"
echo
infhd=$(echo $(df -h | grep "/"$) | cut -d" " -f5);
hd=$(echo $infhd | cut -d" " -f2 | cut -d% -f1);
(( $hd >= 95 )) && {
echo "" && echo "Atencao! pouco espaco em disco. Limpando o disco... Aguarde!";
service squid stop;
cp -a /var/log/squid/access.log /var/log/access.log;
rm -f /var/log/squid/*;
mv /var/log/access.log /var/log/squid/access.log;
rm -rf /var/spool/squid/*;
service squid start;
echo "" && echo "Limpeza de disco efetuada com sucesso..."
};
echo "";
service squid status | grep "morto" 1>/dev/null 2>/dev/null;
(( $? != 0 )) && {
echo "SQUID esta rodando";
} || {
echo "O SQUID esta parado. Iniciando o SQUID... Aguarde!";
killall -9 squid;
service squid start;
}
echo "" && read -p "Pressione enter para voltar ao menu principal";
;;
10 ) clear
echo "Bloqueio de MSN"
echo""
echo "1 - Bloquear Usuarios"
echo "2 - Desbloquear Usuarios"
echo "3 - Listar Usuarios Desbloqeuados"
echo "0 - Retornar ao Menu Principal"
read -p "Opcao: " opcaomsn && echo "";
case $opcaomsn in
1 ) echo "Digite o login do usuario que deseja bloquear" && echo "";
read -p "Usuario: " usuariomsn;
grep '^'$usuariomsn':' $arqusuarios 1>/dev/null 2>/dev/null;
(( $? == 0 )) && {
echo $usuariomsn >> $dirusuarios"users_bloqueio_MSN";
echo "$(date) => o MSN foi bloqueado para o usuario $usuariomsn">>$logfile;
echo "";
echo "============================"
echo "";
echo "Usuario $usuariomsn bloqueado para acesso ao MSN";
echo "";
} || echo "Usuario nao encontrado!";
;;
2 ) echo "Digite o login do usuario que deseja desbloquear" && echo "";
read -p "Usuario: " usuariomsn && echo "";
grep '^'$usuariomsn'$' $dirusuarios"users_bloqueio_MSN" 1>/dev/null 2>/dev/null;
(( $? == 0 )) && {
sed -i.bkp /^$usuariomsn$/d $dirusuarios"users_bloqueio_MSN";
echo "$(date +%d%m%Y) => o MSN foi desbloqueado para o usuario $usuariomsn">>$logfile;
echo "";
echo "";
echo "Usuario $usuariomsn desbloqueado para acesso ao MSN";
} || echo "Usuario não encontrado";
;;
3 ) echo "Usuarios bloqueados para acesso ao MSN:";
echo "=======================================";
echo "";
cat -n $dirusuarios"users_bloqueio_MSN" | more;
echo "";
;;
0 ) echo "Operacao Cancelada";
;;
* ) echo "Opcao Invalida!";
;;
esac;
echo "";
read -p "Pressione Enter para voltar ao Menu Principal...";
;;
0 ) echo "Encerrando o script..."
sleep 2;
exit;
;;
esac;
done
Gerenciamento de logs em servidores de aplicação
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Warcraft II Remastered no Linux? (6)
O programa assinador digital (5)









