"Useradd Script"

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
manuxD
Beiträge: 12
Registriert: 17.02.2011 21:52:45

"Useradd Script"

Beitrag von manuxD » 13.06.2011 20:28:06

Hallo,

Habe 2 Fragen:

Die 1. :

Folgendes Script gibt mir Fehler aus.

Code: Alles auswählen

#!/bin/sh
#

su


menu () {
    clear
    echo "UserAdd V. 1.0"
    echo "Welcome"
    echo ""
    echo "Current User : $USERNAME
    echo ""
    echo "1) Create new User Account"
    echo "2) Set new User Password"
    echo "3) Create Homedir"
    echo "4) Set Homedir"
    echo "5) Create FastDL"
    echo ""
    echo "0) Exit"
    echo ""
    echo -n "Enter a digit: "
}

menu

while read GAME
do

    if [ "$GAME" == "0" ]
    then
        exit 0
    ;;
    case "$GAME" in
	1)
	    menu () {
   
    echo -n "Please enter Username: "
}

menu

while read USERNAME
do
    useradd $USERNAME         
         exit 0
	;;
	2)
	    clear 											    passwd $USERNAME
	    exit 0
	;;
	3)
	    clear 											    mkdir /home/$USERNAME
    	    exit 0
	;;
	4)
	    clear 											    chown $USERNAME /home/$USERNAME 						    exit 0
	;;
	5)
	    	;;
	0)
	    exit 0
	;;
	*)
	    menu
	;;
    esac
done

exit 0


Folgender Fehler:

Code: Alles auswählen

./useradd1.0.sh: line 14: syntax error near unexpected token `)'
./useradd1.0.sh: line 14: `    echo "1) Create new User Account"'
Wie muss das Script angebasst werden ?

Oder anders gefragt... Wie kann ich eine Variable festlegen, welche von einer Eingabe festgelegt wird, also z.B

Please Enter Number : 3

Dann soll diese 3 in der Variable $NUMBER gespeicehrt werden. wie stell ich das an ?

Und wieso läuft das Script nich ?


MfG

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: "Useradd Script"

Beitrag von Meillo » 13.06.2011 22:11:29

Code: Alles auswählen

#!/bin/sh
#

su


menu () {
    clear
    echo "UserAdd V. 1.0"
    echo "Welcome"
    echo ""
    echo "Current User : $USERNAME
Folgender Fehler:

Code: Alles auswählen

./useradd1.0.sh: line 14: syntax error near unexpected token `)'
./useradd1.0.sh: line 14: `    echo "1) Create new User Account"'
... weil hier abschliessende Anfuehrungszeichen fehlen.

Code: Alles auswählen

while read GAME
do

    if [ "$GAME" == "0" ]
    then
        exit 0
    ;;
if ... then ... fi
case ... foo) ... ;; ... esac
Nicht mischen!

Code: Alles auswählen

    case "$GAME" in
	1)
	    menu () {
   
    echo -n "Please enter Username: "
}
Weshalb definierst du hier menu() neu? Das mag vielleicht funktionieren, macht die Sache aber undurchsichtig. Somit frage ich mich gleich weiter: Warum liest du in einer Schleife Usernames?

Code: Alles auswählen

while read USERNAME
do
    useradd $USERNAME         
         exit 0
	;;
	2)
	    clear 											    passwd $USERNAME
	    exit 0
	;;
Oder komme ich nur so durcheinander weil deine Einrueckungen falsch sind?

manuxD hat geschrieben: Wie muss das Script angebasst werden ?
Ein top-level Menue bei dem jede Option eine eigene Funktion aufruft die dann die jeweilige Funktionalitaet beherbergt.
Oder anders gefragt... Wie kann ich eine Variable festlegen, welche von einer Eingabe festgelegt wird, also z.B

Please Enter Number : 3

Dann soll diese 3 in der Variable $NUMBER gespeicehrt werden. wie stell ich das an ?

Code: Alles auswählen

echo -n "Please Enter Number:"
read NUMBER
Wobei Variablennamen in Grossbuchstaben den fuer die Shell bedeutungsvollen Variaben vorbehalten sein sollten. Eigene Variablen in Kleinbuchstaben!

Und wieso läuft das Script nich ?
Das ist einfach: Weil du Fehler gemacht hast. :-P

Dazu dass Scripte dieser Art Windows-typisch sind aber nicht dem Unix-Stil entsprechen will ich mal nichts sagen. Es geht sicher um die Uebung.
Use ed once in a while!

Antworten