Reinier Carmona Lizana cogió un teclado y escribió: 
> método ese de q el jefe se entere por el mismo de los que entraron en sitios
> prohibidos está genial.

Ese script es un traje a mi medida, habría que ver si a ti te sirve. De
todas formas con crear el fichero debidamente, debería funcionar.

Simplemente, toma los datos de /etc/squid/sonsera.conf y los compara con
las trazas, devolviendo por stdout algo como eso:


> From: lazaro <root@localhost>
> To: Lic. Reinicer <juridi...@lex-sa.cu>
> Subject: infractores del mes de mayo
> 
> 
> Estimado Reinier:
> La presente lista; es una recopilacion de lo mas relevante hallado en la
> trazas del mes que culmina.
> 
> "patente" el dia 26 a las 07:46:29 accedio al sitio m.facebook.com
> "juridico1" el dia 18 a las 07:56:30 accedio al sitio mail.google.com
> "patente5" el dia 14 a las 10:49:13 accedio al sitio www.cubisima.com
>
> En espera de su atencion...

Como ya te dije, no es que sea agarrado por el mango. El jefe cita a la
gente y le pregutna porque lo hizo. La gente les hace un cuento chino y el
se lo cree o no.

Por tanto, el script solo reportará la ultima violación del mes y de la
manera mas concisa posible, ya que los jefe NO leen trazas. Por tanto, el
resumen que sea lea con un solo golpe de vista, en segundos y sin hacer
scroll.


Eso debes colgarlo en el cron, que corra a fin de mes y:

OJO: debes tener la rotacion de logs debidamente configurada en logrotate

root@proxy:~# crontab -l|grep violadores
00 00 28 * * /usr/local/bin/violadores.rb|sendmail juridi...@lex-sa.cu


El script te lo dejo abajo:

OJO!!! presta atencion al wrap, hay lineas que son MUY largas...


#!/usr/bin/env ruby

# tomamos las trazas
traza = File.read '/var/log/squid/access.log'

# la lista negra
sonsera = File.read('/etc/squid/sonsera.conf').lines

# si viola 500 sitios, es mas eficiente si el reganho
# le recae por el ultimo que violo, asi entonces seria
# -expliqueme companhero porque usted tal dia y tal hora
# estaba metido en el sitio tal
# De otra forma seria "estas acabando companhero, aguanta"
# y la indisiplina sigue. El jefe ve mejor una violación
# terrrible, que mil infensivas
#
# Ademas, el jefe no lee tanto ni cosas que sena largas
#
violadores={}

# mostraremos el host nada mas
require 'uri'

# por cada sonsera
sonsera.each do |macheo|
   # prueba se mache una traza
   traza.lines.each do |traza|

cuando=Time.at(traza.split('.')[0].to_i)


      # lo echamos pa alante
      if traza.split(' ')[6].include? macheo.gsub("\n",'')
      user=traza.split(' ')[7]
      begin
      url=URI(traza.split(' ')[6]).host
      rescue
      next
      end
         # tomamos el usuario violador y lo grabamos
         if (/[a-z]/ =~ user) == 0 and url
         violadores[user]=[url,cuando]
         end
      end
   end
end

# si no hubieron violaciones, ni te inmutes
exit if violadores.length == 0

puts 'From: lazaro <root@localhost>'
puts 'To: Lic. Reinicer <juridi...@lex-sa.cu>'
puts 'Subject: infractores del mes de '+%w[octiembre enero febrero marzo abril 
mayo junio julio agosto septiempre octubre noviembre 
diciembre][Time.now.month.to_i]
puts ''
puts ''
puts 'Estimado Reinier:'
puts 'La presente lista; es una recopilacion de lo mas relevante hallado en la 
trazas del  mes que culmina...'
puts ''

violadores.each do |quien,que|

puts '"'+quien+'" el dia '+que[1].to_s.split(' ')[0].split('-')[-1]+' a las 
'+que[1].to_s.split(' ')[1]+' accedio al sitio '+que[0].to_s

end

puts ''
puts 'En espera de su atencion...'

-- 
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que está limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a