Atribuir usuários em massa a grupos

Atribuir usuários em massa a grupos

Tenho 2 arquivos de texto, users.txt com uma lista de 1.000 usuários e groups.txt com uma lista de 50 grupos. Quero executar um comando que adicione 30 usuários a cada grupo (ex: usuários 1 a 30 ao grupo 1, usuários 31 a 60 ao grupo 2, etc.). Qual seria a maneira mais prática de fazer isso?

Suponho que poderia criar 50 novos arquivos de texto com uma lista de 30 usuários em cada um e executar 50 scripts bash, mas sinto que existe uma maneira melhor do que essa.

Editar: Isto é o que tenho até agora:

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

Responder1

Embora seja apenas um exercício e você deva fazê-lo sozinho, aqui está uma solução: você realmente deveria fazer isso sozinho, ou seja burro.

Usando alguns loops e testes 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

Observe que isso esvaziará seu arquivo users.txt. então é melhor fazer uma cópia.

Então você ainda precisa adicionar os usuários; mas isso não é complicado neste momento.

informação relacionada