[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: prometo estudiar prog en shell



Carlos Barba wrote:
> 
> alguno de ud. me podria hechar la mano con un pequeño shell que cree
> 3 directorios en cada home de un usuario y copie algunos archivos en dos de
> esos directorios.
> 
> no tengo idea ni de como empezarlo.
> 
> gracias.

	Haber... si esto te da una idea

	cat /etc/passwd | cut -d: -f6 > /tmp/home.usuarios

con esto tomas de la tabla de passwords todos tus usuarios y cortas el
campo donde se especifica su directorio hogar. Si quieres puedes agregar
un grep para seleccionar a ciertos usuarios, yo divido las cuentas por
departamento o matricula asi tengo /home/dep1 /home/dep2 por ejemplo
entonces para tomar a los del dep1 es:

	cat /etc/passwd | cut -d: -f6 | grep /home/dep1 >
/tmp/home.dep1.usuarios

se queda un listado del directorio hogar de todos los usuarios en
/tmp/home.usuarios
mas o menos asi

/home/dep1/usuario1
/home/dep1/usuario2
/home/dep1/usuario3
...

paso siguiente es tomar a cada uno de esos directorios y mandarlo a otro
shell para que le copie lo que quieres, esto lo haria asi:

	cat /tmp/home.usuarios | xargs -i 2_shell.sh {}

el xargs me sirve para mandar linea por linea al segundo shell que
tomara cada linea como un argumento de entrada. El segundo shell se
puede ver asi:

	mkdir "$1"/directorio1
	mkdir "$1"/directorio2
	mkdir "$1"/directorio3
	cp /path/de/los/archivos/* "$1"/directorio1
	cp /path/de/los/archivos/* "$1"/directorio2

## no olvidemos darle al usuario permisos para esos archivos (si es que
se les tiene que dar)

	chown -R "`echo $1 | cut -d/ -f3`" "$1"

## asumiendo que el nombre del usuario esta en el campo 3 del directorio
(/home/dep1/usuario) delimitado por la diagonal "/"
y digamos que se les tiene que dar ciertos permisos
	chmod 644 "$1"/*


como esto lo extraje de scripts que tengo aqui, que estan mucho mas
extensos, tal vez falle por ahi que no en todos los casos sea necesario
poner comillas para uzar la variable ("$1").

Ahora resumiendo un poco...

########################## inicia script1.ksh #######################

#!/usr/bin/ksh
cat /etc/passwd | cut -d: -f6 | grep /home/dep1 >
/tmp/home.dep1.usuarios
cat /tmp/home.dep1.usuarios | xargs -i script2.ksh {}
rm /tmp/home.dep1.usuarios

########################## termina script1.ksh ######################

########################## inicia script2.ksh #######################

#!/usr/bin/ksh
if [ ! -d "$1" ]
then

	mkdir "$1"/directorio1
	mkdir "$1"/directorio2
	mkdir "$1"/directorio3
	cp /path/de/los/archivos/* "$1"/directorio1
	cp /path/de/los/archivos/* "$1"/directorio2
	chown -R "`echo $1 | cut -d/ -f3`" "$1"
	chmod 644 "$1"/*


fi

########################## termina script2.ksh ######################

NOTA: No es necesario que sea kornshell, aunque no lo he probado en otro
shell

Bueno... espero te sea de utilidad, ademas tambien si alguien que vea
algun error me lo haga saber...

-- 
Eduardo Pascual Martinez
Administrador LCE-IEE&M
Tel: (5)326-5555 ext: 3108


Premio Nacional de Calidad 1998,
1999: A~o de la Confianza en el Campus Estado de Mexico,
Tecnologico de Monterrey.



[Hilos de Discusión] [Fecha] [Tema] [Autor]