
Tengo 2 archivos de texto, usuarios.txt con una lista de 1000 usuarios y grupos.txt con una lista de 50 grupos. Quiero ejecutar un comando que agregue 30 usuarios a cada grupo (por ejemplo: usuarios 1-30 al grupo 1, usuarios 31-60 al grupo 2, etc.). ¿Cuál sería la forma más práctica de hacer esto?
Supongo que podría crear 50 archivos de texto nuevos con una lista de 30 usuarios en cada uno y ejecutar 50 scripts bash, pero creo que hay una manera mejor que esta.
Editar: Esto es lo que tengo hasta ahora:
for i in `cat users.txt` ; do useradd $i; echo Pass$i | passwd $i -- stdin; done
for i in `cat groups.txt ; do groupadd $i; done
Respuesta1
Aunque es sólo un ejercicio y deberías hacerlo tú mismo, aquí tienes una solución: deberías hacerlo tú solo o serás tonto.
Usando algunos bucles y pruebas simples:
while read group
do
i=30
while read user
do
echo $user:$group
let "i--"
if [ $i -eq 0 ]
then
break
fi
done < /tmp/users.txt
sed -i -e '1,30d' /tmp/users.txt
done < groups.txt > userswithgroup.txt
Tenga en cuenta que esto vaciará su archivo users.txt. así que mejor haz una copia.
Entonces todavía tienes que agregar los usuarios; pero eso no es complicado en este momento.