Asignación masiva de usuarios a grupos

Asignación masiva de usuarios a grupos

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.

información relacionada