domingo, 17 de abril de 2011

buscar algo en un código (expresiones regulares básicas)

Algo básico para todo sysadmin es buscar en los logs por errores o avisos, y luego disparar alguna acción en base a eso.

Este ejemplo lo que hace es:
  • Obttener un bloque de texto (512 bytes, es una lectura que puede tener muchas líneass o no)
  • Buscar al principio de una línea, un string "HTTP..." (esto es una respuesta de HTTP básica)
  • si lo encuentra, disparar otra funcion

#!/usr/bin/perl -w

$text = "HTTP/1.0 302 Found
Date: Sun, 17 Apr 2011 04:29:37 GMT
Content-Length: 222
Content-Type: text/html; charset=UTF-8
Cache-Control: private
Set-Cookie: PREF=ID=1847c960b2585ff2:FF=0:TM=1303014577:LM=1303014577:S=nIWoylYn45zN4QZi; expires=Tue, 16-Apr-2013 04:29:37 GMT; path=/; domain=.google.com
GMT; path=/; domain=.google.com; HttpOnly
Server: gws
X-XSS-Protection: 1; mode=block
Location: http://www.google.com.ar/
";

if($text =~ /^HTTP/m){
  print "correcto\n";
}

En caso de que quiera evaluar que la primer línea tenga un HTTP al principio, simplemente hay que reemplazar la expresión regular con:

if($text =~ /^HTTP/){

Esto hace que se evalue solamente la primer línea solamente.

No hay comentarios.:

Publicar un comentario