PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell Script in Knoppix !Problem!



Antri
21.05.2005, 00:53
Hallo,

habe nen Problem mit nem Shell Script in Knoppix! Und zwar soll ich für die Schule nen Script erstellen bei dem man Benutzer anlegen kann und Gruppen anlegen kann und die Benutzer dann den Gruppen hinzugefügt werden. Das hat alles auch ohne irgendwelche Probleme geklappt und läuft einwandfrei!

Jetztkommt jedoch die Zusatzaufgabe:

wir sollen machen das man am Ende gefragt wird ob man noch einen Benutzer anlegen will und das ganze soll man dann durch eingeben von "j" oder eben "n" machen können.

Also mit dem if Befehl gingdas bei anderen Sachen ganz easy mit Ja Nein aber der if befehl bringt mich hier wohl 0 weiter!

Ich denke mal das da irgendeine Schleife gemacht werden muss jedoch weiß ich nicht wie ich denn von unten wieder an den anfang des Scriptes komme...

bitte um recht schnelle antwort! :D

Vielen Dank!

Mikes-PCHilfe
21.05.2005, 10:08
Hallo,

machst du das alles in einem BASH Script?
Das was du brauchst ist eine Prompt.

Hast du nicht Python oder Perl zur Verfügung? Damit ginge das wesentlich einfacher bzw. hast du da mehr möglichkeiten

Antri
21.05.2005, 11:40
Hallo,

das ganze sollte eigentlich nicht so kompliziert sein ^^

hier poste ich mal das Script:


#!/bin/sh

#Ein Skript zum Anlegen von Benutzern und Gruppen
#Autor: Andreas Mayer
#Datum: 2005-05-21


######## BENUTZER ANLEGEN ########

if [ -d /home/user ] #überprüfung ob das Verzeichnis bereits existiert
then
echo "Verzeichnis /home/user existiert bereits!" #Der Benutzer erhält diese Meldung falls das Verzeichnis existiert

else

mkdir /home/user # sollte das Verzeichnis nicht existieren wird es mit hier erstellt
echo "Verzeichnis /home/user wurde angelegt" #Der Benutzer erhält einen Infotext das das Verzeichnis erstellt wurde
fi

echo "Bitte geben Sie einen Benutzernamen ein:" #Der Benutzer wird aufgefordert einen Benutzernamen einzugeben
read Benutzername #Der eingegebene Benutzername wird gelesen

if [ -d /home/user/$Benutzername ] #es wird überprüft ob ein Verzeichnis mit diesem Benutzernamen existiert
then
echo "FEHLER: Benutzer $Benutzername existiert bereits!" #falls es existiert bekommt der Benutzer eine Fehlermeldung
else
useradd $Benutzername #hier wird der Benutzer angelegt mit dem eingegebenen Benutzername
mkdir /home/user/$Benutzername #hier wird das Verzeichnis im Ordner /home/user mit dem Namen des Benutzers erstellt
echo "Benutzer $Benutzername wurde erfolgreich angelegt" #der Benutzer erhält eine Meldung das der Benutzer angelegt wurde
fi

######## FERTIG BENUTZER ANLEGEN ########

######## GRUPPEN ANLEGEN ########

if [ -d /home/gruppen ] #es wird überprüft ob ein Verzeichnis /home/gruppen existiert
then
echo "Verzeichnis /home/gruppen existiert bereits!" #Benuter erhält einen Infotext wenn das Verzeichnis vorhanden ist
else
mkdir /home/gruppen #wenn das Verzeichnis nicht existiert wird es hier erstellt
echo "Verzeichnis /home/gruppen wurde angelegt" #der Benuter wird informiert das das Verzeichnis erstellt wurde
fi

echo "Bitte geben Sie einen Gruppennamen ein:" #Der Benutzer wird aufgefordert einen Gruppennamen einzugeben
read Gruppenname #der eingegeben Gruppenname wird gelesen


if [ -d /home/gruppen/$Gruppenname ] #es wird überprüft ob ein Verzeichnis mit dem Gruppenname in dem Ordner /gruppen vorhanden ist
then
echo "Gruppe exisitiert bereits! Wenn Sie fortfahren wollen geben Sie j für Ja und n für nein ein!"
read antwort
if [ $antwort = "j" ]
then
usermod -g $Gruppenname -d /home/user/$Benutzername $Benutzername #den Benutzer der Gruppe hinzufuegen
echo "Der Benutzer $Benutzername wurde der Gruppe $Gruppenname hinzugefügt." #Infotext das er hinzugefuegt wurde
else
echo "Der Benutzer $Benutzername wurde keiner Gruppe hinzugefügt"
fi
else
groupadd $Gruppenname #die Gruppe mit dem eingegebenen Benutzername wird erstellt
mkdir /home/gruppen/$Gruppenname #Verzeichnis mit dem Gruppenname wird erstellt
usermod -g $Gruppenname -d /home/user/$Benutzername $Benutzername #den Benutzer der Gruppe hinzufuegen
echo "Gruppe $Gruppenname wurde erstellt" #Infotext darüber das die Gruppe erstellt wurde
echo "Der Benutzer $Benutzername wurde der Gruppe $Gruppenname hinzugefügt." #Infotext das er hinzugefuegt wurde
chgrp $Gruppenname /home/gruppen/$Gruppenname # ORDNER ZUORDNEN
chmod g+rwx /home/gruppen/$Gruppenname #Rechte der Gruppe
chmod o-rwx /home/gruppen/$Gruppenname
fi



################################################## ##########################################
### -----> AB HIER LIEGEN MEINE PROBLEME
################################################## ##########################################

#### der soll also ab hier wieder von oben anfangen sobald man j eingegeben hat!



echo "Möchten Sie einen weiteren Benutzer anlegen? j für Ja oder n für Nein eingeben:"



# bei der eingabe von j fängt das Script wieder oben an



######## FERTIG GRUPPEN ANLEGEN ########

######## ORDNER ZUORDNEN ########

chown $Benutzername /home/user/$Benutzername
chgrp $Gruppenname /home/user/$Benutzername

######## ORDNER ZUORDNEN FERTIG ########

######## RECHTE AENDERN ########

chmod go-rwx /home/user/$Benutzername #Rechte des Users
chmod g+r /home/user/$Benutzername

######## RECHTE AENDERN FERTIG ########

also Python oder Perl hab ich nicht zur Verfügugn sollte aber auch locker ohne gehen! Wenn ihr das Script seht wisst ihr bestimmt wie das gelöst werden soll!!

Die ganzen Kommentare sind nur weils halt für die Schule ist wir Leute haben die das kein bisschen kapieren! ;D

Mikes-PCHilfe
21.05.2005, 17:31
Hallo,

wie gesagt, ich hab sowas noch nicht mit der reinen shell gemacht.

Schau dich mal bei google um und suche mal nach sowas wie linux shell input

GRuß Mike

Antri
21.05.2005, 17:49
naja bei google hab ich mich dumm und dämlich gesucht!
Aber vielen dank für die hilfe bis jetzt!

Marcus
21.05.2005, 18:07
Hab ja mit shell scripten nicht viel am Hut aber kann man da nicht die gute alte Sprungmarke definieren (ja is nicht ganz sauber). Aber was anderes fällt mir nicht ein, Funktionen (wie man es in ner xbeliebigen Programmiersprache gelöst hätte) wird die shell wohl nicht kennen nehme ich an und mit ner schleife kommt man auch nicht weiter....

Grüße

Marcus

PS: bis wann muß es denn stehen??

Antri
21.05.2005, 18:17
hallo muss bis morgen 18 Uhr fertig sein !!

Aber ich bin morgen fast den ganzen Tag nicht da und 18 Uhr wird sehr knapp!

ich werd mal nach ner Sprungmarke suchen wie sowas geht.
THX!!

€dit: Also wenn ich mit dem goto befehl arbite dann geht das irgendwie nicht! WEnn ich ganz oben einfach :start schreibe und dann unten halt goto :start dann kommt nen fehler das das Kommando goto nicht gefunden wurde!!

Antri
21.05.2005, 20:08
JUHUUU!

Das Problem wäre gelöst!
und zwar folgendes ganz easy! War nen Denkfehler von mir!!

also wenn man in der Shell sh und dann den Dateinamen eingibt wird das Programm ausgeführt

also hab ich einfach ne if bedingung gemacht!

echo "geben Sie j ein falls sie einen weiteren Benutzer anlgegen wollen geben Sie n ein wenn nicht"
if [ $eingabe = "j" ]
then
sh dateiname
else
echo "ende des Programms"
fi

alsowie man sieht war es echt einfach!

Marcus
21.05.2005, 20:28
Was wieder beweist das beim coden die Lösungen oft sehr nahe liegen und leider ob ihrer Einfachheit übersehen werden können.... :)

Grüße

Marcus

BTW: http://www.linuxfibel.de/bashprog.htm

Mikes-PCHilfe
22.05.2005, 11:05
Das heißt du rufst dann einfach ein weiteres bash script auf?

Ok, danke für dein Feedback