Problem mit if else in einem sh-Script

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
bagalude
Beiträge: 44
Registriert: 02.11.2003 22:50:04
Wohnort: Hamburg

Problem mit if else in einem sh-Script

Beitrag von bagalude » 24.07.2011 16:11:31

Hallo zusammen,

ich habe vor einigen Tagen mittels Samba und einem kleinen Script einen pdf Drucker für mein LAN realisiert. Hierbei verwende ich das Samba "print command" um ein sh Script aufzurufen, welches die ps Datei im Spooler in ein PDF umwandelt und dieses anschließend an den am Samba angemeldeten User zustellt. Dies funktioniert soweit auch wunderbar.
Nun wollte ich die Lösung dahin erweitern, daß auch nicht angemeldete User (Guest) auf dem Drucker drucken können. In diesem Fall soll aber das PDF nicht versendet (könnte die Mail ja nicht zustellen), sondern in meinen Public Samba Share verschoben werden. Also habe ich versucht das Script um eine if else Anweisung zu erweitern, welche auf den übergebenen Usernamen prüft und sollte dieser "nobody" lauten das PDF verschiebt anstatt es zu versenden. Nur irgendwie will dies nicht so recht. Hier der Auszug aus dem Script:

Code: Alles auswählen


USER=`whoami`
#Ein Samba Gast ist nobody
GAST = 'nobody'

if ["$USER" = "$GAST"]; then
mv $ZEIT.pdf /home/samba/Public/pdf/

#Haben wir einen User, versenden wir es via mail
else

#Damit mail das pdf als Attachment versendet, wandeln wir es in ASCII-Zeichen um.
uuencode $ZEIT.pdf $ZEIT.pdf > $ZEIT.uuc

#Nun die Mail zustellen
mail -s "PDF-Drucker $ZEIT" $USER < $ZEIT.uuc

#aufräumen!
rm -f $ZEIT.pdf
rm -f $ZEIT.uuc
#Fertig
fi



Nun zu meinem Problem. Obwohl der User nachweislich nobody ist, sofern ich als Guest drucke, wird das PDF nach wie vor via Mail zugestellt. Kommentiere ich allerdings die Zeile

Code: Alles auswählen

mv $ZEIT.pdf /home/samba/Public/pdf/
aus, verbleibt das PDF in /var/spool/samba und wird nicht via Mail versendet.
Ein Problem mit den Rechten scheint es nicht zu geben. Denn wenn ich in den Ordner /var/spool/samba gehe und mittels su auf nobody wechsel, kann ich das generierte PDF problemlos mit

Code: Alles auswählen

mv 2011-07-23-23.19.pdf /home/samba/Public/pdf/
verschieben.
In den logs finde ich leider auch keinen Hinweis, warum es nicht geht. Daher stehe ich grade etwas auf dem Schlauch, zumal ich noch nicht viel Erfahrung mit if else in sh Scripten habe... Hat einer von Euch eine Idee was ich falsch mache?
Try and find out...
Und Rettet die GNU´s!

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Problem mit if else in einem sh-Script

Beitrag von rendegast » 24.07.2011 16:24:05

Code: Alles auswählen

GAST = 'nobody'
->

Code: Alles auswählen

GAST=nobody
Müßte auch eine Fehlermeldung gegeben haben:
bash: GAST: Kommando nicht gefunden.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

DeletedUserReAsG

Re: Problem mit if else in einem sh-Script

Beitrag von DeletedUserReAsG » 24.07.2011 16:36:32

Code: Alles auswählen

if ["$USER" = "$GAST"]
Da fehlen Leerzeichen:

Code: Alles auswählen

if [ "$USER" = "$GAST" ]
… stach mir gerade ins Auge.

cu,
niemand

Benutzeravatar
bagalude
Beiträge: 44
Registriert: 02.11.2003 22:50:04
Wohnort: Hamburg

Re: Problem mit if else in einem sh-Script

Beitrag von bagalude » 24.07.2011 17:10:29

rendegast hat geschrieben:

Code: Alles auswählen

GAST = 'nobody'
->

Code: Alles auswählen

GAST=nobody
Müßte auch eine Fehlermeldung gegeben haben:
bash: GAST: Kommando nicht gefunden.
Ups! Das habe ich ja vollkommen übersehen.:lol:
Danke für den Hinweis, genau das war es natürlich. :THX:
Try and find out...
Und Rettet die GNU´s!

Antworten