Shellscript als Root per Cron ausführen funktioniert nicht?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
monotek
Beiträge: 227
Registriert: 20.07.2004 15:25:11
Wohnort: dresden

Shellscript als Root per Cron ausführen funktioniert nicht?

Beitrag von monotek » 06.09.2005 18:17:45

Ich habe nen Shellscript für mein mail2fax Gateway geschrieben welches ich als Root problemlos auf der Shell ausführen kann. Wenn ich für dieses Script nun nen Cronjob anlege, welcher von Root ausgeführt wird funktioniert es allerdings nicht.

Ich erhalte die Fehlermeldung, dass /tmp/fax2mail nicht gelöscht werden konte, weil es nicht existiert. Das Problem scheint irgendwo bei csplit zu liegen. Ich komm aber nicht drauf wo es genau klemmt?

Hab auch schon versucht die Ausgabe von cron zu loggen (mittels ">>/tmp/error 2>&1").
Im Log waren dann aber keine Fehlermeldungen, sondern nur die normalen Stausmeldungen.

Hat jemand ne idee, was ich falsch mache?
Als Root kanns doch eigentlich an den berechtigungen mangeln?

Hier noch das Script:

Code: Alles auswählen

#!/bin/sh

#
# Mail2fax for OTRS
#

#config
frommail="ich@bla.de"       # for csplit
dialprefix="0"

# script
cd /var/spool/hylafax/bin

if [ -e /var/mail/faxmaster ]; then

/usr/bin/csplit -f fax -n 3 -k -s -z /var/mail/faxmaster "/From ${frommail}  /" {*}

for fax in `/bin/ls /var/spool/hylafax/bin | /bin/grep fax\[0-9\] | /bin/sed 's/fax//'`
do
/bin/cat /var/spool/hylafax/bin/fax${fax} | /usr/bin/mimedecode | /var/spool/hylafax/bin/appendheaders.pl > /tmp/mail2fax
nr=`/bin/grep .*Subject:.*\[Ticket#:.[0-9]\] /tmp/mail2fax | /bin/sed 's/Subject:.*\[Ticket\#\: [0-9]\{16\}\] //'`
/bin/cat /tmp/mail2fax | /bin/sed '1,/^$/d' | /usr/bin/head -n -20 | /usr/bin/a2ps -1 -c -q -B --borders=no -o - | /usr/bin/sendfax -d ${dialprefix}${nr}
/bin/rm /var/spool/hylafax/bin/fax${fax}
done

/bin/rm /tmp/mail2fax /var/mail/faxmaster

fi

Benutzeravatar
Pischti
Beiträge: 417
Registriert: 20.02.2002 12:54:18
Wohnort: dresden

Beitrag von Pischti » 07.09.2005 09:58:35

ohne mich jetzt mit dem inhalt genau auseinanderzusetzen, probier doch mal folgendes:
||ungetestet||
schreib ein script, welches du in den cron-order legst (den zum ausführen)
im script rufst du dein eigentliches script auf
#!/bin/bash
date >> /tmp/mailscript.log
mailscript 2>&1>> /tmp/mailscript.log
damit solltest du dort alle ausgaben von deinem script finden, und kannst so deinen fehler besser finden
hoffe mal, das funtioniert ...
gruss pischti
debian stable

Benutzeravatar
monotek
Beiträge: 227
Registriert: 20.07.2004 15:25:11
Wohnort: dresden

Beitrag von monotek » 07.09.2005 15:09:23

Danke. Hab das Logging noch etwas weiter getrieben.
Hier mal das Log was mit Hilfe von set -x erstellt wurde.

Mi Sep 7 14:34:05 CEST 2005
+ frommail=ich@bla.de
+ dialprefix=0
+ cd /var/spool/hylafax/bin
+ '[' -e /var/mail/faxmaster ']'
+ /usr/bin/csplit -f fax -n 3 -k -s -z /var/mail/faxmaster '/From otrs@magix.net /' '{*}'
++ /bin/ls /var/spool/hylafax/bin
++ /bin/grep 'fax[0-9]'
++ /bin/sed s/fax//
+ /bin/cat /var/spool/hylafax/bin/fax000
+ /usr/bin/mimedecode
+ /var/spool/hylafax/bin/appendheaders.pl
+ cp /tmp/mail2fax /tmp/fax
++ /bin/grep '.*Subject:.*[Ticket#:.[0-9]]' /tmp/mail2fax
++ /bin/sed 's/Subject:.*\[Ticket\#\: [0-9]\{16\}\] //'
+ nr=
+ /bin/cat /tmp/mail2fax
+ /bin/sed '1,/^$/d'
+ /usr/bin/head -n -20
+ /usr/bin/a2ps -1 -c -q -B --borders=no -o -
+ /usr/bin/sendfax -d 0
request id is 51 (group id 51) for host localhost (1 file)
+ /bin/rm /var/spool/hylafax/bin/fax000
+ /bin/rm /tmp/mail2fax /var/mail/faxmaster


Sieht so aus, als ob es nen Problem mit csplit wäre,
da ja scheinbar fax000 nicht richtig erstell wird.

Hab das auch nochmal überprüft indem ich die erstellte /tmp/mail2fax
nach /tmp/fax kopiert habe. In der Datei war einzig und allein ein
großes "F" zu finden? Irgendwas funktioniert beim splitten nicht.
Leider scheint csplit überhaupt keine Ausgabe zu machen. Konnte auf
Anhieb auch in man keine aktivierbare Loggingfunktion finden.

Die Rquest id 51 ist übrigens nur die Ausgabe von sendfax.

Benutzeravatar
monotek
Beiträge: 227
Registriert: 20.07.2004 15:25:11
Wohnort: dresden

Beitrag von monotek » 07.09.2005 20:46:47

ist gelöst. nen sleep 5 im script und es geht...

Antworten