¿Cómo puedo especificar los rangos de IP (RegEx) para SkipHosts en los archivos de configuración de AWStats?
Pregunta
Estoy actualizando algunos archivos de configuración de AWStats antiguos para filtrar algunos rangos de IP específicos. Aquí está la sección pertinente del archivo de configuración:
# Do not include access from clients that match following criteria.
# If your log file contains IP addresses in host field, you must enter here
# matching IP addresses criteria.
# If DNS lookup is already done in your log file, you must enter here hostname
# criteria, else enter ip address criteria.
# The opposite parameter of "SkipHosts" is "OnlyHosts".
# Note: Use space between each value. This parameter is not case sensitive.
# Note: You can use regular expression values writing value with REGEX[value].
# Change : Effective for new updates only
# Example: "127.0.0.1 REGEX[^192\.168\.] REGEX[^10\.]"
# Example: "localhost REGEX[^.*\.localdomain$]"
# Default: ""
#
SkipHosts=""
Quiero, por ejemplo, filtrar X.Y.Z. [97-110]
Probé este formato (Nota: no estos valores de IP, usando el rango privado como ejemplo):
REGEX[^192\.168\.1\.[97-110]]
Pero provoca el siguiente error:
Error CGI
El CGI especificado Aplicación mal comportada por no devolviendo un conjunto completo de HTTP encabezados.
Odio que todo use una sintaxis RegEx diferente. ¿Alguien tiene alguna idea de cómo funciona esto y cómo puedo especificar un rango aquí?
Solución
Suponiendo que las clases de caracteres son compatibles con REGEX []:
SkipHosts = "REGEX[^192\.168\.1\.(9[7-9]|10[0-9]|110)$]"
Otros consejos
La expresión regular que usaste especifica 9 o 7 a 1 o 1 o 0, lo que desordena.
Puedes usar
SkipHosts="REGEX[^192\.168\.1\.(97|98|99|100|101|102|103|104|105|106|107|108|109|110)]"
si estás tan inclinado
¿Se ejecuta AWStats si deja SkipHosts vacío? De lo contrario, pruebe la utilidad de línea de comandos para verificar si hay errores. Por ejemplo, usando Windows:
c:\perlpath\perl.exe awstats.pl config=yourconfigfile -update -logfile=yourlogfile
Eso debería dar más detalles.