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. Du bist "quotefaul" ;) Lieber einmal zuviel quoten als zuwenig. Also alle Stringvariablen immer in "" einschliessen!
#!/bin/bash $TMP="/tmp/smb.tmp"
Fehler TMP="/tmp/smb.tmp" Besser TMP=$(mktemp /tmp/smb-XXXXXXX.tmp) siehe: man mktemp
kdialog --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
Fehler "löschen" "User löschen" off 2>$TMP
ACT=$(cat TMP)
Fehler ACT=$(cat $TMP) Risiko, was ist wenn $TMP nicht existiert? if [ -e $TMP ] ; then ACT=$(cat $TMP) else echo "$TMP existiert nicht" exit fi
rm TMP
Fehler rm $TMP
if [ -z $ACT ] ; then echo Abgebrochen exit fi
if [ ACT=neu ] ; then
Fehler Dieser Ausdruck ist nicht nur syntaktisch falsch, er ist auch noch immer wahr! Genauso wie if [ 1 ] ; then.... immer wahr ist. Richtig: if [ "$ACT" = "neu" ] ; then... Jetzt wird die Variable $ACT geprüft ob sie "neu" enthält.
dialog --inputbox "Bitte Benutzernamen eingeben" 30 50 2> TMP USER=$(cat TMP)
Fehler USER=$(cat $TMP)
rm TMP
Fehler rm $TMP
if [ -z $USER ] ; then echo Abgebrochen exit fi
dialog --inputbox "Bitte Passwort eingeben" 30 50 2> TMP
Fehler 2> $TMP
PASSWD=$(cat TMP)
Fehler USER=$(cat $TMP)
rm TMP
Fehler 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
Fehler if [ "$ACT" = "ändern" ] ; then
dialog --inputbox "Bitte Passwort eingeben" 30 50 2> TMP
Fehler 2> $TMP
PASSWD=$(cat TMP)
Fehler PASSWD=$(cat $TMP)
rm TMP
Fehler 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
Fehler if [ "$ACT" = "löschen" ] ; then
dialog --inputbox "Bitte Username zum löschen eingeben" 30 50 2> TMP
Fehler 2> $TMP
USER=$(cat TMP)
Fehler USER=$(cat $TMP)
if [ -z $USER ] ; then echo Abgebrochen exit fi
smbpasswd -x $USER userdel $USER echo "loesche User" $USER fi
Danke schon im voraus
puh, ja bitte. Dieses Script ist noch niemals richtig gelaufen! Es kann sein, dass das unbemerkt blieb, weil die Datei TMP immer vom 1. 'Dialog' Aufruf angelegt wurde. Du solltest immer absolute Pfadangaben verwenden, oder PATH am Anfang des Scriptes setzen. Also: export PATH=bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin oder z.B: /usr/bin/smbpasswd -x $USER Solltest Du noch einen Fehler finden, darfst Du ihn behalten ;) Du solltest jetzt in der Lage sein, ihn selbst zu beheben. Gruss Bernd