Problem - Shell und Crontab ergeben nicht das gleiche Ergebnis?

Antworten
Nachricht
Autor
Philipp

Problem - Shell und Crontab ergeben nicht das gleiche Ergebnis?

#1 Beitrag von Philipp » 12. Nov 2007 22:46

Hallo Zusammen,

Ich habe ein echtes Problem. Beisse mir ein wenig die Zähne aus.

Ich habe mir folgendes Script geschrieben um zu überprüfen ob mein Server noch online ist.

wget www.example.com/onlinefile.php
x=$(grep 'xyz' /exec/onlinefile.php)

date=$(date)

if [ "$x" = "xyz" ]
then echo $date >> /exec/status.log

else
echo "Seite ist nicht mehr erreichbar." | mail phil@example.co

fi
rm /exec/onlinefile.php

Nun, der Witz daran ist, wenn ich das Programm direkt via Putty ausführe, klappt dies perfekt. Das File onlinefile.php mit dem Inhalt xyz wird heruntergeladen und überprüft. Wenn ich mein Programm nun automatisch mittels crontab laufen lasse, schickt er mir jeweis immer wenn das Programm ausgeführt wird, eine E-Mail. Unabhängig ob der Server online ist oder nicht. Wie kann das sein?

Ich benutze übrigens Debian.
Danke und Gruss

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 13. Nov 2007 1:45

cron benutzt höchstwahrscheinlich einen anderen Suchpfad, so dass wget nicht gefunden werden kann und in der Folge grep nicht auf eine aktuelle Datei zugreift.

In cron-Skripten setzt man besser immer explizit den Suchpfad oder gibt absolute Pfade bei jedem Befehl an.

Außerdem solltest du überlegen, statt wget "curl" zu verwenden, womit das ganze Skript ohne temporäre Dateien auskäme.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Philipp

#3 Beitrag von Philipp » 13. Nov 2007 10:56

Genau das war der Fehler! Vielen Dank für die Hilfe, das Script läuft jetzt perfekt!

Leider kennt mein Debian den Befehl "curl" nicht, gibtes vielleicht eine alternative?

Vielen Dank und ein schöner Tag! Gruss Philipp

PDA

#4 Beitrag von PDA » 13. Nov 2007 18:27

cURL ist ein Programm.

http://curl.haxx.se/

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#5 Beitrag von Janka » 13. Nov 2007 23:08

"apt-get install curl" sollte dies beheben.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

JochenAlsGast

#6 Beitrag von JochenAlsGast » 22. Nov 2007 15:02

Aber warum sollte man dazu unbedingt curl statt wget nehmen muessen?

Code: Alles auswählen

PATH=/bin:/usr/bin
export PATH

if wget -q -O - http://www.example.com/onlinefile.php | grep -q 'xyz'; then
    date >> /exec/status.log
else
    echo "Seite ist nicht mehr erreichbar." | mail phil@example.co 
fi
Keine überflüssigen Tempfiles, keine überflüssigen Ausgaben, keine überflüssigen Variablen. Und mit der PATH-Angabe sind auch keine absoluten Pfade notwendig.

Jochen

Antworten