
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.