Massenweises Zuweisen von Benutzern zu Gruppen

Massenweises Zuweisen von Benutzern zu Gruppen

Ich habe zwei Textdateien, users.txt mit einer Liste von 1000 Benutzern und groups.txt mit einer Liste von 50 Gruppen. Ich möchte einen Befehl ausführen, der jeder Gruppe 30 Benutzer hinzufügt (z. B. Benutzer 1-30 zu Gruppe 1, Benutzer 31-60 zu Gruppe 2 usw.). Was wäre die praktischste Möglichkeit, dies zu tun?

Ich nehme an, ich könnte 50 neue Textdateien mit einer Liste von jeweils 30 Benutzern erstellen und 50 Bash-Skripte ausführen, aber ich glaube, es gibt einen besseren Weg.

Bearbeiten: Das habe ich bisher:

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

Antwort1

Obwohl es nur eine Übung ist und Sie sie alleine machen sollten, gibt es hier eine Lösung: Sie sollten das wirklich alleine machen oder dumm sein.

Verwenden einiger Schleifen und einfacher Tests:

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

Beachten Sie, dass dadurch Ihre Datei users.txt geleert wird. Erstellen Sie daher am besten eine Kopie.

Anschließend müssen noch die Benutzer hinzugefügt werden, was an dieser Stelle aber noch nicht kompliziert ist.

verwandte Informationen