Ho un server Web in esecuzione sul mio Mac e mi piacerebbe ricevere una notifica (tramite Growl per esempio) quando qualcuno accede al mio server.
Ho cercato qualcosa di simile in Automator ma non ho trovato nulla.
Sai se è possibile?
Grazie.
La chiave sono i tuoi registri di accesso. Supponendo che il tuo webserver sia configurato correttamente, ogni volta che viene fornita una pagina dovrebbe fornire un certo livello di dettaglio nei log di accesso. Questo può essere disattivato per siti con carichi di traffico enormi, ma per il tuo bog standard (supponendo) l'installazione di apache su un computer locale immagino che tu non stia guardando come un carico enorme.
Quindi, quello di cui hai bisogno è un metodo per esaminare periodicamente il log di accesso (o in tempo reale) controllando i timestamp o accodando il contenuto ecc. Una volta che questo è ordinato, hai bisogno di un modo per farlo crescere. Growlnotify è un'utilità della riga di comando che accetterà l'output da altri comandi e la userà come base per fornire una notifica del growl grafico.
A questo punto devi decidere se vuoi un semplice "Hai visitatori!" messaggio, o qualcosa che include i dettagli, indica quale pagina è stata pubblicata a quale indirizzo IP ecc. Questa è la tua scelta e rende il codice necessario per scrivere quel bit più complesso o semplice.
Controlla il seguente esempio (mi dispiace, io uso ksh, potresti dover modificare):
#!/bin/ksh
while read access
do
growlnotify -t "HTTP_Access" -m "You have visitors!
done < /http/access/log/folder/log1.log
Ovviamente questo produrrà troppe informazioni e sarà generico, quindi devi aggiungere la tua miscela speciale di a) configurando Apache per accedere solo al livello che ti serve, e b) filtrare comunque le voci, possibilmente formattando mentre vai, ad esempio:
#!/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
Getta questo in un servizio di automazione e via.
Uno dei metodi più potenti per ottenere le notifiche da un server web è creare supporto per webhook . I belle persone dietro questo stack di software hanno un bel blog che aiuta a descrivere come potrebbe funzionare se si desidera codificarlo nel sito Web.
Leggi altre domande sui tag notifications network webserver