Script usado junto com o squid para dedurar usuários.

Publicado por Gleisson Marin Bissa 22/03/2007

[ Hits: 11.081 ]

Homepage: http://www.gleisson.com.br

Download teller.mail.temp




Este script varre diariamente o log do squid, procurando acessos à internet e seus respectivos usuários, enviando para os mesmos e para a gerência um e-mail contendo o nome do usuário, as URL's que ele acessou e o IP/IP's das estações que ele usou.

Basta colocá-lo no cron para rodar de preferência à noite.

  



Esconder código-fonte

#!/bin/bash

# Script de monitoramento de log do squid.
# Faz a varredura do usuario no fim do dia, verifica seus acessos, e manda um e-mail para o proprio usuario e sua gerencia.
# Obs.: Colocar no cron.
# Gleisson Marin Bissa
# ----------------------------------------------------------------------------

dia_cur=$(LC_ALL=C date "+%d/%b")
usuarios=(joao maria jose)

for usuario in "${usuarios[@]}" ; do

       ip=$(grep "$usuario \[$dia_cur" /var/log/squid/access.log | tr -s [' ','/'] '\t' | cut -f1 | sort |uniq)
       url=$(grep "$usuario \[$dia_cur" /var/log/squid/access.log | tr -s [' ','/'] '\t' | cut -f10 | sort |uniq)


        if [ -n "$ip" ] ; then
                usuariold=$usuario

                ## Este case e necessario apenas para adequacao do nome do usuario de internet ao e-mail do caboco, se o nome do usuario for diferente do e-mail.
                case $usuario in
                        joao)           usuario=expedicao       ;;
                        maria)          usuario=mariams         ;;
                        jose)           usuario=josesp
                esac

                domain="seudominio.com.br"
                to="$usuario"
                subject="relatorio diario de acessos a internet"
                data=`date "+%a %d %b %Y - %k:%M:%S"`
                echo -ne "Usuario: $usuariold \nData: $data \n\nEstacoes usadas pelo usuario:\n$ip \n\nURL's:\n$url \n\nEste e um e-mail automatico...Favor nao responder!!! Duvidas entre em contato com o setor de TI" > /tmp/teller

                mail -s "$subject" gerencia.ti@$domain encarregado.ti@domain $to@$domain < /tmp/teller
                if [ -f /tmp/teller ] ; then
                        rm -rf /tmp/teller
                fi
        fi
done

Scripts recomendados

Kronos - Sincronização de arquivos remotos

Copie DVDs para o seu HD

shuttingdown.sh

Script em bash para compilação do kernel 3.3.2 para Ubuntu 11.10 com patch 3.3.0-ck1

Apt-fast melhorado


  

Comentários
[1] Comentário enviado por aprendiz_ce em 23/03/2007 - 12:13h

Gleisson,

Não testei o seu script, mas achei a proposta do mesmo muito interessante. Assim que possível, foi coloca-lo para funcionar.

Obrigado pela atenção e parabéns pelo seu script.

[2] Comentário enviado por xcoastbr em 23/10/2008 - 18:39h

Gleisson,

Muito boa a ideia mas testando aqui ele nao funciona os parametros da data parecem invalidos pois ele retorna 23\Oct e nao acha entrada no access.log.

quando retira a variavel de data ele funciona normal.

Obrigado pela atenção e parabéns pelo seu script.

[3] Comentário enviado por gleissonmb em 24/10/2008 - 08:21h

A variavel dia_cur refere-se ao dia em que o log será varrido. Como rodo esse script diariamente no crontab ela serve para filtrar o dia, caso ela nao existisse, o log seria acumulativo.

Veja no log do squid como comando:
tailf /var/log/squid/access.log, se a data está em Inglês ou Portugues, isso faz toda direfenca.
Ex do meu access.log:
xx.xx.xx.xx - - [24/Oct/2008:08:18:55 -0200] "CONNECT bradesconetempresa.com.br:443 HTTP/1.0" 200 6462 TCP_MISS:DIRECT

dia_cur=$(LC_ALL=C date "+%d/%b")

Ou tente remover o parametro LC_ALL=C da linha da variável.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts