Mostrar lista de usuarios que navegaron en cierto sitio a través de squid
7 comentariosRecientemente necesité contar la cantidad de usuarios que navegaron en cierto sitio usando squid. La solución que utilicé fue esta:
cat /var/log/squid/access.log | tr -s ' ' | cut -d ' ' -f 7,8 | grep foo.bar.tld | cut -d ' ' -f 2 | sort -u
Explicación
Primero el contenido del access.log de squid se procesa por tr convirtiendo los posibles múltiples espacios —separador de cada campo— en uno solo, la salida del comando tr se procesa entonces por cut que elimina todos los campos de cada entrada del log, excepto el 7 y el 8 que son URL y nombre de usuario respectivamente. La salida de cut se procesa con grep para contemplar solamente el sitio de marras y nuevamente la salida se procesa con cut para eliminar la columna del URL. Por último se ordena la salida alfabéticamente y sin repeticiones. Si se quiere contar la cantidad de usuarios, basta con incluir al final del comando anterior | wc -l.
Si alguien tiene alguna solución mejor, sería bueno que se compartiera.
[offtopic] ¿Por que estas publicando cosas nuevas y no me llegan los mails a mi buzon? [/offtopic]
No tengo en estos momentos ningún plugin que maneje suscripciones.
Sencillamente genial. Yo lo hago vía php5 pero cada quién con su medio.
Salu2
Intenté hacer lo mismo pero en vez de usar “cat” decidí usar “tail -f” para intentar buscar en tiempo real los que esten navegando en determinado sitio pero… al menso a mi no me funciono con el tail ¿alguna explicacion por que cat si revisa todo el log y el tail no ?
Recuerda que tail solamente muestra las últimas n líneas de un fichero.
No creo que funcione la verdad, de todos modos no le veo la parte práctica a hacerlo con tail. Si me dieras tu visión pudiera ver qué se puede hacer.
con tail yo lo hago así como root:
tail -f /var/log/squid3/access.log
Aunque no es el mismo tema, pero es de squid tambien. Tengo Sarg pero realmente no se como lograr que me genere correctamente un informe sobre el acceso de los usuarios de mi red a un sitio determinado.