
ich bekomme mit diesem Cron eine 406-Fehlerseite.
BEARBEITEN
ich habe den Cron aktualisiert, um stattdessen wget zu verwenden, aber ich erhalte immer noch keine Ausgabe von der Seite. Hier ist die neue Crontab:
/usr/bin/wget "https://abc.com/cron/sendBulletinEmails.php" >> /home/abc/public_html/cron/logs/sendBulletinEmails.log
Allerdings wird dabei nicht einmal die Protokolldatei verwendet. Stattdessen erhalte ich eine E-Mail. Hier ist die E-Mail-Ausgabe:
--09:20:01-- https://abc.com/cron/sendBulletinEmails.php
=> `sendBulletinEmails.php'
Resolving abc.com... 69.91.162.123
Connecting to fin-iq.com|69.91.162.123|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
0K 122.58 B/s
09:20:02 (122.58 B/s) - `sendBulletinEmails.php' saved [101]
ich habe auch diese Crontab ausprobiert (um die richtige Ausgabe zu erhalten):
/usr/bin/wget --append-output=/home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php"
aber auch hiermit erhalte ich dasselbe Protokoll wie bei der E-Mail. Die Seite gibt Text aus, und das ist es, was ich in meiner Protokolldatei protokollieren möchte. Irgendwelche Ideen, wie man das hinbekommt?
Danke noch einmal!
ALT
hier ist die Crontab (von cPanel kopiert):
* * * * * GET https://abc.com/cron/sendBulletinEmails.php >>
/home/abc/public_html/cron/logs/sendBulletinEmails.log
hier ist das Protokoll:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /cron/sendSurveyEmails.php could not be found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
auch wenn ich es von meinem eigenen Browser aus ausführe, funktioniert es.
irgendwelche Ideen, warum das passiert? Danke =)
Antwort1
Der Erhalt einer E-Mail von cron ist so vorgesehen. Sie können dies deaktivieren, indem Sie >/dev/null 2>&1
am Ende der Zeile Folgendes hinzufügen. (Weitere Informationen zu cron finden Sie hier:
http://adminschoice.com/crontab-quick-reference)
Ich denke, der Rest der Frage könnte gelöst werden, wenn Sie etwas mehr über wget lesen. Sie versuchen, die Ausgabe mithilfe der Standardausgabeumleitung an eine Protokolldatei zu senden. Der Inhalt dieser Datei ist immer nur das, was Sie normalerweise auf dem Bildschirm sehen würden. Wget zeigt die Datei selbst nicht an, daher funktioniert die Ausgabeumleitung hier nicht. Die gute Nachricht ist, dass wget über einen integrierten Schalter zum Verwalten der Ausgabedatei verfügt.
Versuche dies:
/usr/bin/wget -O /home/abc/public_html/cron/logs/sendBulletinEmails.log "https://abc.com/cron/sendBulletinEmails.php" >/dev/null 2>&1
Antwort2
Der Server sucht möglicherweise nach HTTP_USER_AGENT, um automatisierte Tools zu blockieren. Wenn verfügbar, versuchen Sie es mit „wget“. Es unterstützt den -U or --user-agent=AGENT
Schalter in der Befehlszeile, damit Ihr Skript so aussieht, als wäre es eine gültige Firefox-/Internet Explorer-Browsersitzung.
Andernfalls müssen Sie möglicherweise ein kleines Skript schreiben, um robustere Funktionen dieses Perl-Moduls zu verwenden und den Cron-Job das Skript ausführen zu lassen, anstatt get direkt aufzurufen. Ich habe hier einige Beispiele dafür gefunden:http://perlmeme.org/tutorials/lwp.html