Ir al contenido principal

Entradas

Mostrando las entradas de diciembre, 2011

Borrar Archivos Viejos Script de PowerShell

Una de las tareas comunes en la administración de servidores es el hecho de tener que realizar de forma periódica un borrado de archivos de Log, de aplicaciones o de servicios como IIS, por ejemplo una politica puede ser "conservar los archivos de log por 6 dias", asi que tenemos que programar una tarea en el servidor para que cada dia (semana, hora, etc) se ejecute la limpieza. en este post les dejo un script de PowerShell que permite borrar todos los archivos con extensión ".log " en un directorio (y sus subdirectorios), que sean mas viejos que  un numero de dias especificado $pattern = $args [ 0 ] + '\*' $files = Get-ChildItem $pattern - include *. log - Recurse $days = $args [ 2 ] $count = 0 ; $date = Get-Date "Clean Old IIS Log Files Started $date" | Out-File $args [ 1 ] - append - noclobber if ( $files . count - gt 1 ) { foreach ( $file in $files ) { $mark = (( Get-Date ) - $file . Cr

C# Extraer Lineas de un Archivo con Expresión Regular

este pequeño fragmento de código nos permite recorrer un directorio de forma recursiva procesando uno a uno los archivos en dicho directorio para extraer lineas de estos archivos que encajen en una expresión regular definida. me resulto util para consolidar información de varios archivos de log de IIS, donde ademas tenia que extraer un segmento del texto encajado en la expresion regular (algo asi como /image.aspx/150 y necesitaba los codigos de las imagenes) private   static   void  Main( string [] args) {              var  salida =  new   StreamWriter ( ".\\out.txt" );              string  dir =  "." ;              if  (args.Count() > 0) {                 dir = args[0];             }              Regex  regExp =  new   Regex ( @"POST" );              string [] filePaths =  Directory .GetFiles(dir,  "*.log" ,  SearchOption .AllDirectories);              foreach  ( string  file  in  filePaths) {                  Console .Write

SQL Server SubString y RegExp

Entre mis tareas diarias me toco realizar un match entre información de diferentes archivos de log, para facilitar un poco el asunto decidí convertir todo a csv y cargarlo en mi instancia local de SQL Server. algunos de los campos que eran importantes para el proceso que estaba realizando estaban incluidos como parámetros en el QueryString de la request, por lo que me encontré con la necesidad de dividir un string, según un patrón por decir algo el query string de ejemplo showMap.aspx?id=123456&source=algo&destination=otracosa la funcion PATINDEX del TSQL te permite obtener la posicion de un patron dentro de una cadena y esto combinado con la funcion SUBSTRING  me permitieron tomar solo las partes del campo sin depender de una posición inicial fija, eso si, tuve que depender de una longitud fija, pero con un poco mas de trabajo se puede determinar la posición final también utilizando PATINDEX. por ejemplo, usando patindex para encontrar la posicion inicial del texto &

Logs IIS Extraer Request a un Script

Una de las tareas que tarde o temprano un administrador de servidores Windows tiene que realizar es la de extraer información de los archivos de Log de diferentes servicios, esto puede ser requerido para detectar errores, riesgos de seguridad y otro sin fin de causas, Si los servidores a tu cargo tienen una cantidad de trafico considerable te pueden encontrar con la sorpresa de tener 80 GB de archivos de Log, perfectamente distribuidos en un archivo diario ( de mas o menos 40 MB ) por lo que la extracción de ciertas request que resultan relevantes puede resultar complicado. al rescate aparece microsoft con una herramienta poderosa pero poco conocida, pareciera incluso un poco abandonada, sin mucha documentacion, pero justifica la inversión de tiempo para aprender a utilizarla. LogParser,  http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=24659 básicamente es una herramienta que nos permite ejecutar consultas al estilo SQL, sobre archivos planos (en diferen