[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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.