Analizando access.log

Monitoreo simple

tail -f -n 25 access.log

IPs

awk '{print $1}' access.log | sort -u
egrep -o '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]' access.log | sort -u

Top IPs

awk '{print $1}' access.log | sort | uniq -c | sort -nr
egrep -o '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]' access.log | sort | uniq -c | sort -nr
perl -e '$ip{(split)[0]}++ while <>; print map "$_ : $ip{$_}\n", sort {$ip{$b} <=> $ip{$a}} keys %ip' access.log

Top User Agents

awk -F\" '{print $6}' access.log | sort -n | uniq -c | sort -nr

IPs de un Bot

grep 'Googlebot' -i access.log | awk '{print $1}' | sort | uniq

Top URLs

awk -F\" '{print $2}' access.log | sort -n | uniq -c | sort -nr

Status Code

awk '$9 == 500 { print $6 $7}' access.log

grep -Eo "'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.* 500' access.log

awk '$9 == 400 { print $6$7 }' access.log

Sustitución de cadenas en todos los archivos

Util para sustituir cadenas en todos los archivos del directorio actual y de manera recursiva dentro de todos sus demás directorios también:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Cadena/Palabra/g'

perl -p -i -e 's/Cadena/Palabra/g' `grep -ril Cadena *`

Por ejemplo, en WordPress, para crear un nuevo tema llamado Poet y totalmente basado en el tema Twenty Eleven, es necesario usar:

find . -type f -print0 |xargs -0 perl -p -i -e 's/Twenty Eleven|Twenty_Eleven/Poet/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven_/poet_/g';

find . -type f -print0 |xargs -0 perl -p -i -e 's/twentyeleven/poet/g';