
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.