• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Und neuer Anlauf ;) Schleife einbauen

G

Guest

Gast
Hallo Leute,

nachdem mein grundlegendes User anlegen Script nun läuft möchte ich noch eine Abfrage einbauen bei der man angeben kann das der User in eine Gruppe aufgenommen wird.
Ich hab mir das so vorgestellt, dass er ein usermod macht um den User der Gruppe hinzuzufügen, danach eine Abfrage ob er den User in noch eine Gruppe hinzufügen will.
Das macht er so lange bis man irgendwann bei der Abfrage Nein macht.

Hier ist mein Ansatz:


Hier mein Script:

echo
echo "User in Gruppe(n) aufnehmen."
echo
echo "Soll der User nachträglich in die Gruppe aufgenommen werden? J / N"
read Z
if [ $Z = J ]
then
echo
echo "Bitte Benutzernamen eingeben"
read USER
echo
echo "Bitte Gruppenname eingeben"
read GROUPS
usermod -G $GROUPS $USER

#Hier muss das mit der Abfrage und der Schleife rein

else
echo
echo "Dann halt nicht"
echo
fi


Wer kann mir helfen?
 
OP
G

Guest

Gast
Merci für den Tipp.
Aber irgendwie kann ich des nicht richtig umsetzen.
So siehts bei mir aus:

echo
echo "User nachträglich in Gruppe(n) aufnehmen."
echo
echo "Soll der User nachträglich in die Gruppe aufgenommen werden? J / N"
Z = "J"
while [ "$Z" = "J" ]; do
echo
echo "Bitte Benutzernamen eingeben"
read USER
echo
echo "Bitte Gruppenname eingeben"
read GROUPS
usermod -G $GROUPS $USER
read Z
done
 

oc2pus

Ultimate Guru
und was tut da nicht ?

btw:
read groups
if [ -z $groups ]; then
echo "falsche Eingabe"
fi

so sollte man das auch noch prüfen sonst gibts so unschöne Seiteneffekte beim usermod aufruf

du kannst in deinem script am anfang mal set -x setzen, damit schaltest du den debug modus an
 
OP
G

Guest

Gast
er mekert die zeile 5 an:

Z: command not found
 
OP
G

Guest

Gast
Hallo Leute,

dank eurer Hilfe läuft das Script nun soweit:

echo
echo "User in Gruppe(n) aufnehmen."
echo
echo "Soll der User nachträglich in die Gruppe aufgenommen werden? J / N"
read Z

while [ $Z = "J" ]
do

echo
echo "Bitte Benutzernamen eingeben"
read USER
echo
echo "Bitte Gruppenname eingeben"
read GRUPPE
echo
echo "Noch nen User?"
read Z
done
usermod -G $GRUPPE $USER
echo
echo "Dann halt nicht"
echo


Alledings hab ich jetzt ein Problem:
Der usermod-Befehl kann nur einmal ausgeführt werden um einen User Gruppen hinzuzufügen. Beim zweiten ausführen sind die "alten" Gruppen wieder weg.
D.h. ich kann den Befehl nur einmal ausführen und muss dem User dann allen Gruppen übergeben. Also praktisch usermod -G gruppe, gruppe2, gruppe3 username

Wenn ich nun alles in einem Befehl übergeben muss, muss ich ja praktisch ne Schleife machen die dann jedes mal ne andere Variable übergibt, also in meinem Fall $USER immer eins hochzählt.

Und dann beim usermod-Befel die Anzahl der Variablen per Kommata getrennt einfügt.

Shit, des ist mal ewig heftig
Kann mir da jemand weiterhelfen wie man sowas praktisch umsetzt?
 

oc2pus

Ultimate Guru
wenn du jetzt meinst, ich schreibe dir dein Script --- Fehlanzeige

hier zum studieren:
http://www.tldp.org/LDP/abs/html/

so und hier noch ein paar basics:
weiter="J"
while (weiter != "J") do
read user
GRUPPEN=""
moregroups="J"
while (moregroups ="J") do
echo "Gruppe eingeben:"
read group
if group != "" then
ALLEGRUPPEN=$ALLEGRUPPEN,group
fi
echo "weiter Gruppen [J/N]"
read moregroups
done

usermod -G $user $ALLEGRUPPEN

echo "weitere User [J/N]"
read weiter
done

und das darfst du jetzt als Hausufgabe in BASH umsetzen
 
Oben