Danke, jetzt geht es. Kannst Du ein Buch zum bash/shell scripten empfehlen? By Olli Dr. Jürgen Vollmer schrieb:
Am Montag, 5. Dezember 2005 09:33 schrieb Oliver Wiemer:
#!/bin/sh TMP="/tmp/smb.tmp"
dialog --backtitle Benutzer --title Details \ --radiolist "Bitte wählen Sie \ Hier können Sie Benutzer anlegen und ändern" 16 60 5 \ "neu" "User anlegen" off \ "ändern" "User ändern" off \ "löschen" "User löschen" off 2> TMP
ACT=$(cat TMP) rm TMP
if [ -z $ACT ] ; then echo Abgebrochen exit fi
if [ $ACT=neu ] ; then dialog --inputbox "Bitte Benutzernamen eingeben" 30 50 2> TMP USER=$(cat TMP) rm TMP if [ -z $USER ] ; then echo Abgebrochen exit fi
dialog --inputbox "Bitte Passwort eingeben" 30 50 2> TMP PASSWD=$(cat TMP) rm TMP if [ -z $PASSWD ] ; then echo Abgebrochen exit fi
useradd $USER -p $PASSWD -s /bin/false -d /home/$USER mkdir /home/$USER chown $USER.users /home/$USER printf "$PASSWD\n$PASSWD\n" | smbpasswd -a -s $PASSWD fi
if [ $ACT=ändern ] ; then
dialog --inputbox "Bitte Passwort eingeben" 30 50 2> TMP PASSWD=$(cat TMP) rm TMP if [ -z $PASSWD ] ; then echo Abgebrochen exit fi
printf "$PASSWD\n$PASSWD\n" | smbpasswd -a -s $PASSWD fi
if [ $ACT=löschen ] ; then
dialog --inputbox "Bitte Username zum löschen eingeben" 30 50 2> TMP USER=$(cat TMP)
if [ -z $USER ] ; then echo Abgebrochen exit fi
smbpasswd -x $USER userdel $USER echo "loesche User" $USER fi
es fehlen die Blanks um das = Richtig wäre also
if [ $ACT = neu ] ....
Anbei einige Bemerkungen zu Script, bzw. wie ich es schreiben würde. -------------
#!/bin/sh TMP=/tmp/smb.tmp.$$ # man sollte schon eine PID anhängen. # sonst hat man Probleme wenn das Proggi # gleichzeitig mehrfach aufgerufen wird # die " sind hier nicht nötig
TRAP "rm -f $TMP" EXIT # lösche diese Datei, wenn fertig/abgebrochen
dialog --backtitle Benutzer --title Details \ --radiolist "Bitte wählen Sie \ Hier können Sie Benutzer anlegen und ändern" 16 60 5 \ "neu" "User anlegen" off \ "ändern" "User ändern" off \ "löschen" "User löschen" off 2> $TMP # $TMP, sonst wird die Datei "TMP" im aktuellen # Verzeichnis geschrieben, und nicht: /tmp/smb.tmp.$$ # Generell: überall im Script muß $TMP stehen ACT=`cat $TMP` # wenn /bin/sh, da $(cat $TMP) BASH spezifisch ist, und damit # nicht portabel
case $ACT of "neu" ) .... der Code ... ;; "ändern" ) .... der Code ... ;; "löschen" ) .... der Code ... ;; * ) # der Default ;; esac -------------