Oliver Wiemer schrieb:
Hallo Leute,
könnt Ihr mal auf mein Script schauen. Auf manchen Maschinen läuft es und auf meiner 10er Suse nicht. Ich habe vermutlich etwas nicht standartkonformes drin.
Beim Start springt er sofort zur Eingabe des Benutzers.
Da sind mir noch ein paar Sachen aufgefallen...
#!/bin/bash $TMP="/tmp/smb.tmp"
Da hab ich Dir einen Fehler eingebaut ;) Es heisst TMP=$( mktemp /tmp/smb-XXXXXX ) #Ohne .tmp
kdialog --backtitle Benutzer --title Details \
kdialog? Ist ja wohl falsch, die Optionen passen jedenfalls nicht dazu.
--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)
Die Variable USER ist schlecht. Die gibts u.U in der Shell schon. Nimm also 'Benutzer' oder UserName oder sowas.
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
Ich habe die Syntax nicht im Kopf, aber sollte das nicht printf "$USER\n$PASSWD\n" | ... heissen? Abgesehen davon ist der korrekte Aufruf von printf: printf "%s\n%s\n" "$USER" "$PASSWD"
fi
if [ ACT=ändern ] ; then
Woher kommt hier der Username, ich denke das fehlt hier noch.
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
s.o -- Gruss Bernd