Cuenta el número de directorios de la ruta actual
ls -l | grep «^d» | wc -l

En este pequeño one-line command estamos utilizando tres comandos diferentes bajo una terminal Linux: ls (listar archivos), grep (filtrar) y wc (contar).

Así pues, en el primer comando, ls -l, listamos todos los archivos de la ruta actual (el parámetro -l muestra una linea por archivo, con sus propiedades).
drwxr-xr-x 2 emezeta group 4096 Apr 24 14:58 folder1
-rwxr-xr-x 2 emezeta group 4096 Jun 12 12:47 readme.txt
drwxr-xr-x 2 emezeta group 4096 Apr 24 14:58 folder2
-rwxr-xr-x 2 emezeta group 4096 Jun 12 12:47 MAKEFILE
drwxr-xr-x 2 emezeta group 4096 Jun 12 12:47 temporal

A ese listado, filtramos las líneas que empiecen por d (directorios) con una expresión regular, quedándonos con ellas y descartando las líneas que no empiezan por d (no son directorios).
drwxr-xr-x 2 emezeta group 4096 Apr 24 14:58 folder1
drwxr-xr-x 2 emezeta group 4096 Apr 24 14:58 folder2
drwxr-xr-x 2 emezeta group 4096 Jun 12 12:47 temporal

Finalmente, con wc (y el parámetro -l) contamos las líneas que nos quedan, devolviendonos el número de directorios.
3
1. Los 35 recursos más pedidos

Con este one-line command conseguiremos que se nos muestren los 35 recursos más pedidos a nuestro servidor web, con la transferencia acumulada y el tamaño de cada recurso independientemente (entre paréntesis).
cat access_log | cut -d» » -f10,7 | sort -n | uniq -c | awk ‘{printf(«%2.2fMB (%2.2fKB) %s\n», ((($3*$1)/1024)/1024), (($3)/1024), $2)}’ | sort -n | tail -35

Es muy útil para optimizar nuestro sitio web con respecto a la transferencia, ya que podemos observar que ficheros son los más pedidos y actuar en consecuencia.
Ejemplo de resultado
28.56MB (91.98KB) /weblog/geek-nogeek-2.png
28.64MB (13.85KB) /ttf/sansation.ttf
29.24MB (3.71KB) /img/imgload.jpg
39.58MB (10.53KB) /img/social-susc.png
48.43MB (130.18KB) /weblog/ajedrez-ag-piezas.jpg
2. Los 50 agentes de usuario menos comunes

Un agente de usuario es la identificación del navegador (o aplicación) que se utiliza para acceder al recurso del servidor web. Se ordenarán por número de peticiones realizadas.
cat access_log | cut -d» » -f12- | egrep -v «MSIE|Gecko|Safari|Opera» | sort | uniq -c | sort -n | tail -50

En este ejemplo filtraremos los navegadores basados en el motor del Internet Explorer, Gecko, Safari y Opera.
Ejemplo de resultado
113 «facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)»
120 «Mozilla/4.0 (PSP (PlayStation Portable); 2.00)»
126 «Mozilla/5.0 (PLAYSTATION 3; 1.00)»
194 «Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)»
277 «msnbot/2.0b (+http://search.msn.com/msnbot.htm)»
504 «Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)»
567 «Mediapartners-Google»
816 «Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)»
3. 50 referers más activos

Con este comando y sustituyendo emezeta.com por nuestro dominio (para excluirlo) veremos cuales son los referers (referidos, lugares de donde vienen nuestros lectores) más activos, que nos mandan más tráfico.
egrep -v «emezeta.com» access_log | cut -d» » -f11 | cut -d»/» -f3 | sort | uniq -c | sort -n | tail -50

El resultado sería un listado de dominios según el tráfico que nos envían hacia nuestra web (en orden creciente).
Ejemplo de resultado
77 www.meneame.net
201 search.conduit.com
216 www.friki.net
275 rho.bloglines.com
341 www.google.com.ar
484 www.google.com.mx
800 www.google.com
1494 www.taringa.net
2148 www.google.es
4. Las 15 IPs/Hosts que más peticiones realizan

Por norma general, si ordenamos el tráfico recibido por IP o direcciones de host, siempre encontraremos un determinado usuario / robot que consume más tráfico de lo normal.

Puede tratarse de un usuario que utilice mucho nuestra web o navegue mucho por ella, sin embargo, suelen aparecer muchos robots o aplicaciones automatizadas (spammers, robots extractores de emails, bots…) que se pueden detectar facilmente de esta forma.
cat access_log | cut -d» » -f1 | sort | uniq -c | sort -n | tail -15

Una pista interesante suele ser el hacer un nslookup a la IP en cuestión para examinar su dns inverso o comprobar si se puede acceder introduciendo la IP en el navegador web (generalmente son servidores mal configurados que aprovechan los spammers*).

Si quieres saber más, lee este artículo sobre bots de spam en blogs y como detenerlos o bloquearlos.
Ejemplo de resultado
541 128.242.240.212
660 msnbot-65-55-3-192.search.msn.com
742 crawl-66-249-68-99.googlebot.com
950 b3091344.crawl.yahoo.net
1503 69.63.189.16
50083 mail.micro-system-fail.com
53406 www.power-balancing-corporation.co.uk

* En el ejemplo se puede ver como hay dos hosts con peticiones desproporcionadas comparadas con el resto. El dns inverso también es extraño, puesto que representa posibles servidores mal configurados (¡Ojo! Esto no tiene porque ser siempre así, puede tratarse de algún empleado de la hipotética empresa Power Balancing Corporation que decidió darse una vueltita por nuestra web…).
5. Examinar posibles problemas del servidor

Es posible mostrar las peticiones que han devuelto un 404 error (no encontrado), y así observar las que se repitan demasiado, que pueden implicar algún tipo de problema en nuestro sitio (enlace incorrecto, recurso borrado, etc…).
grep «HTTP/…. 404 » access_log | cut -d» » -f6-7 | sort | uniq -c | sort -n | tail -15 | tr -d \»

Esto nos mostrará un listado con las peticiones más frecuentes con error 404 y si se trata de una petición GET o POST (recibir datos externos).
Ejemplo de resultado
3 GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=6415&STRMVER=4&CAPREQ=0
8 GET /img/tro-banner.png
8 POST /comments/
13 GET /img/logo.png
48 GET /apple-touch-icon-precomposed.png
48 GET /apple-touch-icon.png
128 GET /index.css

Es posible, también, con el siguiente comando, obtener un listado de los códigos HTTP emitidos, para hacernos una idea global, y posteriormente, examinar con el one-line command anterior, modificando el 404 por el código a revisar.
cat access_log | cut -d» » -f9 | sort | uniq -c | sort -n | tail -50
6. Descubrir probables spammers de comentarios

Mucho cuidado con este punto. El código nos mostrará un listado de los IPs/Hosts que envian datos al servidor (formularios, comentarios, envío de correos, etc…). No tienen porque ser spammers o bots.
grep » \»POST /» access_log | cut -d» » -f1,7 | sort | uniq -c | sort -n | tail -50

Sin embargo, es muy sencillo localizar peticiones desproporcionadas (con respecto al resto), peticiones extrañas o hosts muy sospechosos (con dominios rusos o similares) para investigar un poco más.

Un buen sistema para evitar ataques automatizados y peticiones de spam o similares es mediante el uso de Mod Security.

Además, bloqueando mediante firewall se suele reducir el consumo de CPU y memoria RAM del servidor.
Ejemplo de resultado
1 oracle1.wrt-inc.com //xmlrpc.php
1 xi.delaware.net /articulos/10-trucos-para-blogs-conseguir-mas-visitas/contact.php
2 xi.delaware.net /contact.php
8 80.144.51.10 /comments.php
78 mail.power-balancing.com /administrator.php
7. Los 25 accesos SSH fallidos más insistentes

Cuando tenemos un servidor Linux, generalmente tenemos disponible un servidor SSH para abrir una terminal remota y trabajar sin necesidad de tener acceso físico al equipo.

Obviamente, a este servidor puede acceder cualquier persona, a parte de nosotros, y sus intentos de acceso son (por defecto de syslog) registrados en /var/log/secure.
zgrep «Failed password for » /var/log/secure* | sed «s/invalid user //» | tr -s » » | awk ‘{print $11″ «$9}’ | sort | uniq -c | sort -n | tail -25

Con este one-line command conseguirás un listado de las IPs/Hosts que más intentos han realizado para hacerse con una terminal en el servidor, y con los usuarios que lo han intentado.
Ejemplo de resultado
62 202.102.120.202 admin
66 85.132.34.250 oracle
67 200.17.236.254 ftpuser
224 216.205.103.46 emezeta
441 115.238.28.155 root
682 66.240.52.5 root
2000 86.120.31.18 root
2866 202.102.120.202 root

Normalmente se trata de ataques automatizados, pero hay que tener especial cuidado con los accesos con nombres aparentemente inteligentes (que no puedan formar parte de un diccionario como admin, root, oracle o mysql).
8. ¿Cuántos suscriptores RSS tenemos?

La mayoría de suscriptores RSS cuando acceden a la página original del editor, dejan un rastro en su User Agent que indican los suscriptores a su feed rss en la actualidad.
egrep «subscriber» access_log | cut -d» » -f12- | sort | uniq | sort | tr -d \»

Utilizando el one-line command anterior podremos obtener esta información. Si quieres más datos sobre esto, puedes echarle un vistazo a ¿Cuántos suscriptores RSS tiene nuestro blog?.
Ejemplo de resultado
Bloglines/3.1 (http://www.bloglines.com; 329 subscribers)
Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1439 subscribers; feed-id=2165378610225046384)
Feedshow/2.0 (http://www.feedshow.com; 1 subscriber)
Netvibes (http://www.netvibes.com/; 220 subscribers; feedID: 57337)
NewsGatorOnline/2.0 (http://www.newsgator.com; 51 subscribers)
PostRank/2.0 (postrank.com; 1 subscribers)
9. Palabras clave que buscan en Google

Construir un listado exacto de todas las palabras que se escriben en el buscador de Google para llegar a nuestro sitio web sería muy complicado, pero con este one-line command realizamos una aproximación de esta tarea.
cat access_log | cut -d» » -f11 | egrep -i «http://(www.)?google» | sed «s/q=/©/» | cut -d»©» -f2 | cut -d»&» -f1 | grep «\+» | sort | uniq -c | sort | tail -50

Siempre podemos variar este último tail -50 para que en lugar de mostrarnos las más frecuentes, nos muestre las que sólo se buscan una vez (útil para hacer zeitgeists) con head -50, o verlas todas debidamente paginadas con less o more.
Ejemplo de resultado
7 fondos+para+twitter
9 punto+ciego
13 aplicaciones+android
13 trucos+tuenti
49 memoria+ram
82 musica+de+los+80
10. Los 50 smartphones más usados en tu web

Con este sencillo one-line command accederemos a un listado donde se nos mostrará, como siempre, en orden creciente, un listado de los smartphones más comunes con los que visitan nuestra página.
cat access_log | cut -d» » -f12- | egrep «MIDP|iPhone|Android» | sort | uniq -c | sort -n | tail -50 | tr -d \»

Lo que nos mostraría un listado similar al siguiente:
Ejemplo de resultado
136 Opera/9.80 (Android; Opera Mini/5.1.21126/20.2479; U; es) Presto/2.5.25
152 Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 Nokia5800d-1/50.0.005[…]
158 Mozilla/5.0 (Linux; U; Android 1.6; es-es; Orange_Boston Build/DONUT)[…]
158 Mozilla/5.0 (Linux; U; Android 2.1-update1; es-es; HTC Legend 1.23.161.1[…]
175 BlackBerry9700/5.0.0.593 Profile/MIDP-2.1 Configuration/CLDC-1.1[…]
218 Mozilla/5.0 (Linux; U; Android 1.5; en-us; eee_701 Build/CUPCAKE)[…]
290 Mozilla/5.0 (Linux; U; Android 2.2; es-es; Nexus One Build/FRF91)[…]
291 Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; es-es)[…]
435 Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; es-es)[…]
Consideraciones finales

Varias consideraciones finales a tener en cuenta sobre este artículo:

* El mantra sort | uniq -c | sort -n se utiliza para ordenar un listado de resultados, de modo que queden adyacentes los que sean iguales. De este listado ordenado, suprimimos las lineas repetidas, contandolas (y añadiendo ese número al principio), para posteriormente organizarlas (en orden creciente de números naturales).
* La mayoría de los comandos que se relatan a continuación son para la estructura de los logs y registros de servidores como Apache y Syslog (con su patrón de registro por defecto). Por lo que si tienes otro, o has cambiado el tuyo, debes tenerlo en cuenta.
* La mayoría de resultados no ofrecen una estadística real, puesto que dependen mucho de la estructura de archivos de tu página web. Sirve sólo para hacerse una idea e identificar datos concretos.
* En cada punto, estamos haciendo un volcado del registro (access_log, error_log, secure, messages…) completo. Esto dependerá de la configuración que tengas establecida en tu servidor. Normalmente se usan herramientas como logrotate para rotar y que el registro no se haga demasiado grande, aunque hay animales que tienen archivos gigantescos.

Por admin

Deja una respuesta

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
100% Free SEO Tools - Tool Kits PRO