La función de las guardas es la de asegurarse del
cumplimiento de ciertas características. Esas
características de ficheros pueden referirse a
características de ficheros o a características de
directorios. Por tanto se contemplas varios tipos de guardas.
Guarda ifname -> Esta guarda evalua la condicion
sobre el nombre del fichero en cuestión. Vamos a
continuación a mostrar unos ejemplos de su uso:
ifname= fichero1
Esta guarda devolvera cierto si el nombre del
fichero es fichero1
ifname!= fichero2
Esta guarda devolvera cierto si el nombre del
fichero es distinto de fichero2
Guarda ifuid -> Esta guarda evalua la
condición sobre el nombre de usuario del fichero en
cuestión. Vamos a continuación a mostrar unos ejemplos de
su uso:
ifuid=
jvergara Esta
guarda devolvera cierto si el nombre de usuario del fichero es jvergara
ifuid!=
jvergara Esta guarda
devolvera cierto si el nombre de usuario del fichero es distinto de
jvergara
Guarda ifgid -> Esta guarda evalua la
condición sobre el nombre de grupo del fichero en
cuestión. Vamos a continuación a mostrar unos ejemplos de
su uso:
ifgid=
jvergara Esta
guarda devolvera cierto si el nombre de grupo del fichero es jvergara
ifgid!=
jvergara Esta guarda
devolvera cierto si el nombre de grupo del fichero es distinto de
jvergara
Guarda ifperm -> Esta guarda evalua la
condición sobre los permisos de un fichero en cuestión.
Vamos a continución a mostrar unos ejemplos de su uso:
ifperm= 0777
Esta guarda devolvera cierto si
los permisos del fichero son 0777
ifperm!= 0777
Esta guarda devolvera cierto si los permisos
del fichero son distintos de 0777
Guarda iflength-> Esta guarda evalua la
condición sobre la longitud de un fichero en cuestión.
Vamos a continuación a mostrar unos ejemplos de su uso:
iflength= 200
Esta guarda devolvera cierto si la longitud
del fichero es 200
iflength!= 200
Esta guarda deviolvera
cierto si la longitud del fichero es distinta a 200
iflength> 200
Esta
guarda devolvera cierto si la longitud del fichero es mayor que 200
iflength!> 200
Esta guarda devolvera
cierto si la longitud del fichero no es mayor que 200
iflength< 200
Esta guarda
devolvera cierto si la longitud del fichero es menor que 200
iflength!<200
Esta guarda devolvera
cierto si la longitud del fichero no es menor que 200
Guarda especiales and y or -> Estas guardas se
usan para evaluar condiciones sobre el cumplimiento de varias guardas
para un mismo fichero. Son usadas con la notación
matemática de predecendia de operadores. A continuación
se exponen unos ejemplos de su uso:
and ifname= f1 ifperm=
0700 Esta guarda devolvera cierto si el nombre
del fichero es f1 y sus permisos son 0700.
or and ifname=f1 ifperm= 0700
ifname= f2 Esta guarda devolvera cierto si el
nombre del fichero es f1 y sus permisos son 0700 o bien devolvera
cierto si el nombre del fichero es f2.
Como se puede apreciar con estas guardas ya se cubren muchas de las
cosas que se quieren mirar sobre un fichero, pero puede que el usuario
quiera hacer cosas más especificas. Por ejemplo, el usuario
puede querer que se haga alguna operacion con los permisos de un
fichero, si el contenido del mismo tiene una determinada cadena de
caracteres. Para no limitar la funcionalidad de PFS, se le ha dotado de
una serie de guardas genericas para su programación con scripts
externos por parte del usuario. Es decir, si un usuario lo desea, puede
engachar su fichero de álgebra con un script externo. Veamos
unos ejemplos para que queden más claros estos conceptos.
Guarda iffile -> Esta
guarda se encarga de pasar a un script externo el contenido de un
fichero por la entrada estandar. La guarda se queda escuchando en la
salida estandar, esperando a que el script externo, después de
mirar lo que quiera sobrel contenido del fichero que le he pasado, me
devuelva true o false.
iffile
/usr/jvergara/check_content Esta guarda pasa
el contenido del fichero que este tratando al script check_content por
la entrada estandar. El script hará sus comprobaciones sobre ese
contenido y después devolverá true o false.
El contenido del script
check_content es el siguiente:
#!/bin/rc
aux=`{cat |grep pass}
if (test $aux '='
'') echo false
if (!(test $aux '='
'')) echo true
Como se puede ver,
comprueba si el contenido del fichero tiene la palabra pass y si es asi
devuelve true, por tanto la guarda se cumpliría.
Guarda ifattr
-> Esta guarda es como la anterior pero sobre los atributos de un
fichero. Es decir, al script externo se le pasarán los atributos
del fichero, uno por línea. Después el script ya se
encargará de devolver true o false segun se cumplan ciertas
cosas sobre esos atributos.
ifattr
/usr/jvergara/check_uid Esta
guarda pasa el contenido del fichero que este tratrando al script
check_uid por la entrada estandar, escribiendo un atributo por linea.
El script hará sus comprobaciones sobre esos atributos y
después devolverá true o false. El orden en que se le
pasarán los atributos al script es: name, uid, gid, muid,
length, mode, atime, mtime.
El
contenido del script check_uid es el siguiente:
#!/bin/rc
aux=`{cat |sed 2q |
tail -1l}
if (test $aux '='
jvergara) echo true
if (test $aux '!='
jvergara) echo false
Como
se puede ver, el script comprueba si la linea 2 que le han pasado es
jvergara, si es asi devuelve true, sino false.
Guarda ifdir -> Esta guarda es muy interesante
para poder hacer comprobaciones sobre el contenido de un directorio.
Ifdir pasará al script el path de un directorio que esta
trantando para que el script haga las comprobaciones que desee y
después devuelva true o false como en los dos casos anteriores.
ifdir
/usr/jvergara/check_dir Esta
guarda pasa el path del directorio al script check_dir, para que este
haga un ls sobre él y devuelva true si ese directorio contiene
el fichero de nombre f1d1. Si no devuelve false.
El contenido del script check_dir es el siguiente:
#!/bin/rc
aux=`{cat |sed
1q}
direntry=`{ls
$aux| grep f1d1}
if (test $direntry
'=' '') echo false
if (!(test
$direntry '=' '')) echo true
Como se puede ver, el script
comprueba si en en el listado de directorio se encuentra el fichero
f1d1, si es asi devuelve true, sino false.
Tipos
de acciones
Las funciones de las acciones es realizar cambios en el sistema de
ficheros "al vuelo". Esos cambios son hechos sobre el contenido de un
fichero, o sobre el contenido de un directorio, o sobre los atributos
de un fichero... por esto tenemos varias acciones.
Aqui encontraras fichero de álgebra de ejemplos y scripts
externos que te harán su uso más facil!!! (proximamente)