Archiv verlassen und diese Seite im Standarddesign anzeigen : Shell Script in Knoppix !Problem!
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
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
naja bei google hab ich mich dumm und dämlich gesucht!
Aber vielen dank für die hilfe bis jetzt!
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??
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!!
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!
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
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.