¿Quién visita nuestro servidor web Apache? Un primer vistazo con un sencillo script

Bastante sencillo y útil si trabajáis en la administración de servidores web: un script que a partir del fichero access.log nos permite ver el número de visitas por IP a un servidor web Apache. Se excluyen bots de Google, Bing, Yahoo… pero en cualquier caso, podéis modificar este script según convenga para tareas de administración:

#!/bin/bash
#
# Title         :apache_visitors.sh
# Author        :Julio Sanz
# Website       :www.elarraydejota.com
# Date          :9th August 2015
# Tested in 	:Debian 8 Jessie 64 bits, Apache 2.4
# Description   :Useful script to retrieve info about the numbers of visits by IP to your website (excluding bots)
# Dependencies  :None
# Usage         :bash apache_visitors.sh
# License       :GPLv3
#
########################################################################################################

# Variables
# Location of the Apache access log, change if needed
APACHE_LOG="/var/log/apache/access.log"
# Just a tmp file to store information about IPs and number of visits
VISITORS_TMP_FILE="visitors.tmp"

echo -e "Number of visits \tIP" > $VISITORS_TMP_FILE

# List all IP of the log
for ip in `cat $APACHE_LOG | awk '{ print $1}' | grep -v "bot" | sort | uniq`;
# Begin counting
do
counter=`grep ^$ip $APACHE_LOG |wc -l`;

        if [ "$counter" -ge "1" ];then
        # We want only the IP in case the visitor is logged with his hostname
        hostname_defined=`echo $ip | grep [a-z]`
                if [ ! -z $hostname_defined ];then
                ip=`nslookup $ip | awk '/^Address: / { print $2 }'`
                fi
        echo -e "$counter  \t\t\t$ip" >> $VISITORS_TMP_FILE
        fi

done

# Final sort, skip header from sort
(head -n 1 $VISITORS_TMP_FILE && tail -n +3 $VISITORS_TMP_FILE | sort -nr) < $VISITORS_TMP_FILE

# Delete tmp file
rm $VISITORS_TMP_FILE

Dadle permisos de ejecución:

chmod +x apache_visitors.sh

Posteriormente ejecutáis con:

./apache_visitors.sh