Usuario del software
2012-06-21 10:54:47 +0000 2012-06-21 10:54:47 +0000

Respuestas [3]

24
2012-06-21 11:08:20 +0000
egrep '^[^]+ (0[89]|1[0-9]|2[012]):'

Se puede encontrar una explicación detallada en varios tutoriales de regex (expresión regular); egrep utiliza la sintaxis "POSIX extendida" (man 7 regex).

  • El primer ^ significa "inicio de línea".

  • [^]+ sólo coincide con el campo de la fecha, independientemente de la fecha real.

  • (...|...|...) significa "cualquiera de los patrones dados", así que (0[89]|1[0-9]|2[012]) significa "o 0[89] o 1[0-9] o 2[012]". Coincidirá con todos los números del 08 al 22.


Una opción algo mejor es:

awk -F'[:]' '$2 >= 8 && $2 <= 22 { print }'

La opción -F divide cada línea en campos separados según la regex [:] (coincidiendo con : o con un espacio), y el script awk comprueba la 2ª columna (la hora).

24
21
2012-06-21 11:11:02 +0000

¿Por qué molestarse en usar grep? Puede utilizar simplemente sed.

ejemplo:

sed -n '/Jun 17 13:39:54/ , /Jun 18 10:50:28/p' kern.log

Esto imprimirá todos los registros entre June 17 13:39:54 y June 18 10:50:28

21
0
2016-05-09 06:43:49 +0000

En realidad hay una manera mucho más fácil de hacer esto.

Descarga/Documentación: autodrgrep.kl.sh

Comando:

./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_08:00:00,2016-05-08_23:00:00' 'INFO' 'a2ensite' 5 10 -show

Explicación:

  • autodrgrep.kl.sh es el nombre de la herramienta.

  • notchef es una opción que se pasa a la herramienta para indicarle lo que debe hacer. En este caso particular, le dice a la herramienta qué tipo de archivo de registro es /tmp/client.log.

  • /tmp/client.log es, por supuesto, el archivo de registro.

  • 2016-05-08_19:12:00,2016-05-08_21:13:00 es el rango de fecha dentro del log que se desea escanear

  • "INFO" es una de las cadenas que está en las líneas de logs que le interesan.

  • "a2ensite" es otra cadena en la misma línea en la que espera encontrar la cadena "INFO". Especificar estas dos cadenas (INFO y a2ensite) aísla y procesa las líneas que quieres mucho más rápido, particularmente si estás tratando con un archivo de registro enorme.

  • 5 especifica Advertencia. Al especificar 5, le está diciendo al programa que alerte como ADVERTENCIA si hay al menos 5 ocurrencias de las cadenas de búsqueda que especificó

  • 10 especifica Crítico. Al especificar 10, le está diciendo al programa que alerte como CRÍTICO si hay al menos 10 ocurrencias de las cadenas de búsqueda que especificó.

  • -show especifica qué tipo de respuesta obtendrá. Al especificar -shown, está diciendo que si se encuentra algo que coincida con los patrones especificados, se muestre en pantalla.

Ejecución de ejemplo:

# ./autodrgrep.kl.sh notchef /tmp/client.log '2016-05-08_19:12:00,2016-05-08_21:13:00' 'INFO' 'a2ensite' 5 10 -show

[2016-05-08 19:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:13:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 19:42:57-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 19:42:57-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 19:42:57-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 19:43:08-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 19:43:11-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:12:58-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:12:58-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:12:58-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:13:10-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:13:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 20:42:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 20:42:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 20:42:59-07:00] INFO: execute[a2ensite default] ran successfully
[2016-05-08 20:43:09-07:00] INFO: Processing execute[a2ensite nagios3.conf] action run (logXrayServer::install line 24)
[2016-05-08 20:43:12-07:00] INFO: execute[a2ensite default] sending restart action to service[apache2] (delayed)
[2016-05-08 21:12:59-07:00] INFO: Processing template[/usr/sbin/a2ensite] action create (apache2::default line 90)
[2016-05-08 21:12:59-07:00] INFO: Processing execute[a2ensite default] action run (apache2::default line 24)
[2016-05-08 21:12:59-07:00] INFO: execute[a2ensite default] ran successfully
23
2---78720---23---ATWFILF---(2016-05-08)-(19:12)---(2016-05-08)-(21:13) SEAGM

¿Qué pasa si el rango de fechas o el marco de tiempo especificado por el usuario no está en el registro?

Cada ejecución del comando anterior siempre tendrá una línea (la última línea de la salida) que dice "ATWFILF" o "ETWNFILF".

  • ATWFILF significa que el rango de fechas real o el marco de tiempo que usted solicitó buscar fue encontrado en el registro. Esto es muy bueno.

  • ETWNFILF significa que el intervalo de fechas o el marco temporal que solicitó buscar NO se encontró en el registro. En este caso, se detectará la hora más cercana a la especificada y se utilizará en su lugar.

0