2016-04-26 10 views
0

Ich schreibe ein Skript, das einige wichtige Daten (via Cronjob) von einer URL holt und eine E-Mail sendet, wenn es fehlschlägt, aber es scheint nicht zu erkennen, ob es fehlgeschlagen ist oder nicht (checking wget's return value [if]):Eine E-Mail senden, wenn wget fehlschlägt

wget_output=$(wget --tries=1 --timeout=300 -r -N -nd -np --reject=html https://myurl/ -P ../data) 
if [ $? -ne 0 ] 
then 
    echo "send email here" >> ./test.txt 
else 
    echo "send email here" >> ./test2.txt 
fi 

es wird versucht, nur 1-mal (wie gesagt) und gibt dann nach oben, aber nicht erkennt, dass es entweder gelungen ist oder nicht. Ich nehme an, dass ich den Exit-Code nicht richtig handhabe oder so. Irgendeine Idee? Danke

Antwort

2

Was ist die Version wget, die Sie verwenden? Der Exit-Status-Abschnitt für die Manpage der Version 1.15 lautet:

In den Versionen von Wget vor 1.12 war der Went-Exit-Status tendenziell nicht hilfreich und inkonsistent. Rekursive Downloads würden praktisch immer 0 (Erfolg) zurückgeben, unabhängig von aufgetretenen Problemen, und nicht-rekursive Aufrufe haben nur den Status zurückgegeben, der dem zuletzt versuchten Download entspricht.

+0

interessant, obwohl ich bin überrascht, dass 'test2.txt' in diesem Fall nicht erstellt wird (weder Datei erstellt wird) – timhc22

+0

Wie Sie dies in einem cron-Job ausgeführt werden Sie absolute Pfade für diese Dateien verwendet werden sollen: die Arbeitsverzeichnis ist möglicherweise nicht das, was Sie erwartet haben. Und stellen Sie sicher, dass der Cron-Benutzer Schreibrechte für dieses Zielverzeichnis hat. Vielleicht lohnt es sich auch zu überprüfen, ob die Shell-Option 'errexit' aktiviert wurde. – jil

+0

ah super danke, ich werde es morgen versuchen! – timhc22