jueves, 5 de noviembre de 2009

Politicas personalizadas

Hasta ahora estabamos trabajando y haciendo busquedas simples, o bien por extension o bien por tamaño, pero eran unas politicas muy rigidas, por eso desde el último post, aproximadamente unas 3 semanas nos hemos dedicado a crear un script awk que permita leer un fichero de configuración en el cual las politicas del usuarios sean lo mas flexibles y configurables posibles.

Trabajamos con 5 posibles filtros de politica, que son:
- Tamaño de fichero.
- Ruta de fichero.
- Fecha último acceso.
- Extensión.
- Caching por partes.

A partir de estas 5 hemos creado sus 5 políticas simples, es decir que filtre por tamaño de fichero, por ruta de fichero, etc, y luego combinatoria de dos y 3 de ellas en cualquier tipo de orden, unos ejemplos:

- Tamaño fichero, extensión, ruta de fichero.
- Ruta de fichero y extensión.
- Extensión, ruta de fichero y tamaño de fichero
...

Dentro de esto cabe destacar que tenemos una expresión regular para cada tipo diferente de política, y que son aproximadamente unas 80 o 90, dentro del script awk también tenemos ciertas funciones que nos parsean los datos de la forma que nos conviene y que llaman al nuestro "charging" script con los parámetros necesarios, y que sera el que se encargará de hacer las búsquedas correctas y su posterior caching, estas funciónes estan agrupadas, es decir, que existirá una sola función para la política "extensión y ruta" y "ruta y extensión"

Por otro lado también hemos tenido que adaptar nuestro "charging script" a estas modificaciones, ya que nuestra forma de trabajar ha cambiado de forma considerable, principalmente respecto a la función de búsqueda de ficheros acorde con la política. Hemos conseguido hacer tan solo un par de llamadas al comando find en vez de hacer una llamada por cada tipo de politica, cosa que nos produciría también alrededor de 80 o 90 llamadas al comando find, y esto lo hemos resuelto comprobando a través de un identificador de política el tipo de política y haciendo que los parametros que forman parte del comando fueran variables, a parte de las variables valores que necesitamos buscar.

Un ejemplo seria que al hacer una búsqueda por tamaño nuestro comando seria algo como find -size -"tamaño_introducido".

Pero lo que hacemos es que -size sea una variable $size, y que dependiendo el identificador de política su valor sea "-size" o nulo "".

No hay comentarios:

Publicar un comentario