PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit sh-Script im Cronjob



Fördy
25.08.09, 13:13
Hallo,

ich habe ein sh-Script, dass mir eine pgp-Datei entschlüsselt. Dazu habe ich einen Cronjob, der täglich dieses sh-Script ausführen soll. Wenn ich Befehl exakt wie im Cronjob ausführe, klappt es. Aber der Cronjob funktioniert nicht.

Hier das sh-Script:


#!/bin/bash

clear

VERZEICHNIS="/var/www/fidelity/documents/Eingang_pgp/$(date +%Y)/$(date +%Y%m)/"
ALTERDATEINAME="DS$(date +%Y%m%d)001.xls.pgp"
NEUERDATEINAME=`echo $ALTERDATEINAME | awk -v FS="." '{print $1 "." $2}'`
echo ""
echo "Entschluessele Datei $VERZEICHNIS$ALTERDATEINAME"
echo "------------------------------------------------"
gpg --passphrase-fd 0 -o $VERZEICHNIS$NEUERDATEINAME -d $VERZEICHNIS$ALTERDATEINAME < /var/www/fidelity/secure/gpg/abcdruck.ppf
echo "------------------------------------------------"
echo ""

php /var/www/fidelity/cron_protocol.php

exit 0


Und hier der Cronjob (das MAILTO funktioniert leider nicht, obwohl ich postfix installiert habe):


PATH=/var/www/fidelity:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# m h dom mon dow command
#ein paar andere cronjobs...
15 16 * * * sh /var/www/fidelity/gpg-decrypt.sh


Für Hilfe wäre ich sehr dankbar!
Grüße

marce
25.08.09, 13:30
liegt vermutlich an falschen Evironment-Variablen.

Verwender mal durchgehend vollständige und absolute Pfade.

Fördy
25.08.09, 13:45
Verwender mal durchgehend vollständige und absolute Pfade.
Ist bereits der Fall

marce
25.08.09, 13:46
dann ist der von die gepostete Code-Teil nicht aktuell. Ich sehe da reichlich nicht-absolute-Pfade...

Fördy
25.08.09, 13:49
dann ist der von die gepostete Code-Teil nicht aktuell. Ich sehe da reichlich nicht-absolute-Pfade...

Erzähl, ich seh keine. Lass mich gerne eines Besseren belehren :)

marce
25.08.09, 13:50
#!/bin/bash

clear

VERZEICHNIS="/var/www/fidelity/documents/Eingang_pgp/$(date +%Y)/$(date +%Y%m)/"
ALTERDATEINAME="DS$(date +%Y%m%d)001.xls.pgp"
NEUERDATEINAME=`echo $ALTERDATEINAME | awk -v FS="." '{print $1 "." $2}'`
echo ""
echo "Entschluessele Datei $VERZEICHNIS$ALTERDATEINAME"
echo "------------------------------------------------"
gpg --passphrase-fd 0 -o $VERZEICHNIS$NEUERDATEINAME -d $VERZEICHNIS$ALTERDATEINAME < /var/www/fidelity/secure/gpg/abcdruck.ppf
echo "------------------------------------------------"
echo ""

php /var/www/fidelity/cron_protocol.php

exit 0

ich hab sie mal fett markiert...

Fördy
25.08.09, 13:54
Ah ok, verstehe. Und woher weiß ich den Pfad der Befehle?

marce
25.08.09, 13:55
which ist Dein Freund.

Übirgens - bei der Postingfreuqenz von Dir könnte ich Dir unterstellen, daß Du erst fragst, bevor Du eigene Recherchen anstellst :-)

Fördy
25.08.09, 14:04
which ist Dein Freund.

Übirgens - bei der Postingfreuqenz von Dir könnte ich Dir unterstellen, daß Du erst fragst, bevor Du eigene Recherchen anstellst :-)

Danke, which kannte ich noch nicht. :)
Doch, ich habe schon einige Tage Recherche hinter mir aber leider ohne Ergebnis.
Hab jetzt die Pfade absolut gemacht, allerdings sind die benötigten ja schon in der Crontab unter PATH=/bin:/usr/sbin:/usr/bin erwähnt.


#!/bin/bash

/usr/bin/clear

VERZEICHNIS="/var/www/fidelity/documents/Eingang_pgp/$(/bin/date +%Y)/$(/bin/date +%Y%m)/"
ALTERDATEINAME="DS$(date +%Y%m%d)001.xls.pgp"
NEUERDATEINAME=`/bin/echo $ALTERDATEINAME | /usr/bin/awk -v FS="." '{/usr/bin/print $1 "." $2}'`
/bin/echo ""
/bin/echo "Entschluessele Datei $VERZEICHNIS$ALTERDATEINAME"
/bin/echo "------------------------------------------------"
/usr/bin/gpg --passphrase-fd 0 -o $VERZEICHNIS$NEUERDATEINAME -d $VERZEICHNIS$ALTERDATEINAME < /var/www/fidelity/secure/gpg/abcdruck.ppf
/bin/echo "------------------------------------------------"
/bin/echo ""

/usr/bin/php /var/www/fidelity/cron_protocol.php

glako
25.08.09, 14:18
http://www.linux-forum.de/problem-mit-sh-script-im-cronjob-29504.html

Fördy
25.08.09, 14:57
Hat sich erledigt.

Das mit den vollständigen Pfaden für die Befehle war nicht nötig.

Das clear musste ich entfernen und bei gpg die Option "--no-tty" einfügen. Thx!