dr4gbal Recién llegado
Registrado: 11 May 2010 Mensajes: 1
|
Publicado: 11/05/10 (13:37:22) Asunto: Proyecto Script sobre la orden Find del Shell |
|
|
Las opciones del script son la siguientes:
-C fichero
Permite cambiar el fichero de configuración de valores de variables por defecto y de
opciones que reconoce nuestra nueva orden.
Ejemplo de fichero de configuración:
#variables
PASSWD=/etc/passwd
GROUP=/etc/group
HISTORICO=historicos/h1.log
#opciones
-name:1::Búsqueda por nombre
-group:1:fgrupo:Búsqueda indicando grupo del fichero (grupo|GID)
-links:1:fnumero_mas_menos:Búsqueda por número de enlaces duros
-ls:0::Salida extendida
-type:1:f_dfl:Tipo de fichero a buscar(Directorio|Fichero ordinario)
Las líneas que comienzan por '#' son comentarios.
Hay un bloque que contienen valores para algunas variables que emplea nuestra orden:
– PASSWD: ruta del fichero de usuarios, si no aparece tomará por defecto el valor
../etc/passwd
– GROUP: ruta del fichero de grupos, si no aparece tomará por defecto el valor
../etc/group
– BUSCAR: ruta del punto de comienzo, por defecto, de las búsquedas, si no aparece
tomará por defecto el valor ../../perl2010
– HISTORICO: ruta del fichero histórico de búsqueda realizadas, si no aparece tomará
por defecto el valor historicos/historico1.log
Otro bloque contendrá las opciones que podemos pasar al comando 'find', el formato de
cada opción es el siguiente:
– nombre de la opción: empieza por el carácter '-'
– número de argumentos de la opción: cada vez que la usemos, deberemos comprobar que
el número de argumentos coincida con este valor.
– función de validación: es opcional, corresponde al nombre de una función que tendrá
que ser evaluada para cada opción, antes de ser usada en la orden 'find'. Las posibles
funciones son:
• fgrupo: comprueba que el GID o nombre de grupo indicado es válido
• fusuario: comprueba que el UID o nombre de usuario indicado es válido
• fnumero_mas_menos: comprueba que el argumento es un número, que puede ir
precedido de los símbolos más (+) o menos (-)
• f_dfl: comprueba que el siguiente argumento sea uno de los siguientes valores:
letra 'd', letra 'f' o letra 'l'
– ayuda: es el texto de ayuda correspondiente a esta opción.
-O fichero
Permite cambiar el directorio de comienzo de la búsqueda. Sólo se puede indicar un
directorio. Si el directorio no se encuentra buscará los directorios que se llamen igual en el
sistema de archivos, empezando dicha búsqueda en el directorio ../../perl2010. Este
valor por defecto se puede cambiar alterando en el fichero de configuración la variable
BUSCAR.
-H fichero
Permite cambiar el fichero que emplearemos para guardar el histórico de ordenes dadas.
Sólo se puede indicar un fichero. Si no se indica se usará como valor por defecto
historicos/historico1.log, a no ser que se emplee en el fichero de configuración
la variable HISTORICO.
opciones
Son las opciones que desde nuestro nuestro script pasaremos al comando 'find'. El conjunto
de opciones válidas vienen recogidas por el fichero de configuración. Dependiendo del
fichero de configuración que usemos, estas podrán cambiar.
-rm
Esta opción eliminará todos los archivos que devuelva la ejecución del comando 'find'.
-cp directorio, -mv directorio
Permiten copiar o mover los archivos que devuelva la orden 'find al directorio usado como
siguiente argumento. Debe asegurarse de que el directorio destino exista y tenga los
permisos adecuados.
Para las opciones -rm, -cp y -mv, puede emplear opción -exec del comando 'find'.
-HZ
Borra el fichero histórico. El nombre del fichero a borrar será el primero que encuentre,
siguiendo el siguiente orden:
1. el indicado por la opción -H
2. el indicado por la variable del archivo de configuración HISTORICO
3. el valor por defecto historicos/historico1.log
Tras su ejecución se mostrará un mensaje informativo:
$ perl mifind.pl -HZ
******************************
historicos/h1.log Borrado
******************************
-HM
Listará numeradas las entradas del fichero histórico que nos corresponda, siguiendo el orden
indicado anteriormente. Una vez listadas podremos pulsar números de líneas, los que
deseemos, hasta pulsar '0' para salir. Acto seguido el sistema eliminará del fichero histórico
las líneas seleccionadas. Hay que tener en cuenta que el usuario podría haber indicado líneas
repetidas y que puede haber introducido números de líneas que no existen.
-HX
Listará numeradas las entradas del fichero histórico que nos corresponda, siguiendo el orden
indicado anteriormente. Una vez listadas podremos pulsar '0' para salir o el número de una
de las líneas del histórico. Si se introduce un valor no válido, emitirá el correspondiente
mensaje de error y volverá a pedir otro valor válido. Una vez tengamos un número válido, la
línea correspondiente a este valor será vuelta a ejecutar.
$ perl mifind.pl -HX
1 - find -name f0
2 - find -name f2
3 - find .. -name f1.txt
4 - find .. -name 'f1*.*'
Introduzca (0 para salir, 1 a 4 para ejecutar esa entrada):
? 6
Opción no válida
? 4
***********************
* Se ejecutará la orden: find .. -name 'f1*.*' 2> errores.txt
***********************
….
-A
Genera la siguiente salida, que se corresponde con el contenido del fichero de configuración.
Este será el fichero de configuración por defecto, a no ser que se haya cambiado con la
opción '-C fichero'.
Ejemplo:
$ perl mifind.pl -A
Fichero de configuración: ./config
=================================
Fichero PASSWD.........: /etc/passwd
Fichero GROUP..........: /etc/group
Fichero HISTORICO......: historicos/h1.log
Lista opciones:
opción nºargs función validación texto de ayuda
====== ====== ================== =======================================================
-name 1 Búsqueda por nombre
-user 1 fusuario Búsqueda indicando propietario del fichero (usuario|UID)
-ls 0 Salida extendida
-group 1 fgrupo Búsqueda indicando grupo del fichero (grupo|GID)
-links 1 fnumero_mas_menos Búsqueda por número de enlaces duros
-type 1 f_dfl Tipo de fichero a buscar(Directorio|Fichero ordinario
Para todas las opciones debemos comprobar que la sintaxis de los argumentos es la
adecuada. En caso contrario el script genera el correspondiente mensaje de error y termina la
ejecución.
Durante todo el ejercicio, se deberá de comprobar que se poseen los permisos necesarios
cada vez que necesitemos manipular o consultar cualquier fichero o directorio.
No está permitido el empleo de la función system del perl ni ningún otro medio parecido en
la codificación del script, excepto la llamada al comando 'find', como ya se ha indicado.
A ver quien puede echarme una mano haciendo esas funciones para mi script, porfavor necestio ayuda |
|