Cómo recibir una notificación de acceso HTTP

1

Tengo un servidor web ejecutándose en mi Mac y me gustaría recibir una notificación (a través de Growl, por ejemplo) cuando alguien accede a mi servidor.

Busqué algo así en Automator pero no encontré nada.

¿Sabes si esto es posible?

Gracias.

    
pregunta OyoKooN 03.02.2012 - 16:59

3 respuestas

1

La clave son tus registros de acceso. Suponiendo que su servidor web esté configurado correctamente, cada vez que se sirve una página, debe proporcionar algún nivel de detalle en los registros de acceso. Esto se puede desactivar para sitios con enormes cargas de tráfico, pero para su instalación de apache estándar (suponiendo) de bog en una máquina local, me imagino que no se ve como una carga masiva.

Entonces, lo que necesita es un método para examinar el registro de acceso periódicamente (o en tiempo real) ya sea marcando las marcas de tiempo, o siguiendo el contenido del contenido, etc. Una vez que esté ordenado, necesita una forma de hacerlo crecer. Growlnotify es una utilidad de línea de comandos que aceptará la salida de otros comandos y la usará como base para proporcionar una notificación de gruñido gráfico.

En este punto, debe decidir si desea un simple "¡Tiene visitas!" mensaje, o algo que incluya los detalles, diga qué página se envió a qué dirección IP, etc. Es su elección y hace que el código que necesita para escribir ese bit sea más complejo o simple.

Verifique el siguiente ejemplo (lo siento, uso ksh, es posible que deba modificarlo):

#!/bin/ksh
while read access
do
growlnotify -t "HTTP_Access" -m "You have visitors!
done < /http/access/log/folder/log1.log

Obviamente, esto producirá demasiada información y será genérico, por lo que debe agregar su propia combinación especial de a) configurando Apache para que solo se registre en el nivel que necesita, yb) filtre las entradas de todos modos, posiblemente formatee mientras vas, por ejemplo:

#!/bin/ksh
while read access
do
formatted_access='echo $access | grep -v "unwanted strings" | awk '{print "Time "$1", IP"$4}''
count ='echo $formatted_access | wc -l'
case $count in
(0)
# No line matched criteria
;;
(*)
growlnotify -t "HTTP_Access" -m $formatted_access
;;
esac
done < /http/access/log/folder/log1.log

Tira esto en un servicio de automator, y listo.

    
respondido por el stuffe 03.02.2012 - 17:20
1

Uno de los métodos más poderosos para obtener notificaciones de un servidor web es crear soporte para webhooks . Las gente buena detrás de esta pila de software tienen un buen blog que ayuda a describir cómo podría funcionar si desea codificar esto en el sitio web.

    
respondido por el bmike 03.02.2012 - 20:29
-1

Growl probablemente puede hacer esto automáticamente:

    
respondido por el user1188152 03.02.2012 - 19:31

Lea otras preguntas en las etiquetas