Frage

Ich versuche, eine HTML-Datei mit curl in bash zum Download bereit. Wie diese Seite: http://www.registrar.ucla.edu/ Zeitplan / detselect.aspx? termsel = 10S & subareasel = PHYSIKALISCH- idxcrs = 0001B +++

Wenn ich es manuell herunterladen, es funktioniert gut. Allerdings, wenn ich mein Skript durch crontab versuchen und laufen, ist die Ausgabe HTML-Datei sehr klein und nur sagt „Objekt bewegt hier.“ mit einem defekten Link. Hat das etwas mit der spärlichen Umwelt zu tun die crontab Befehle es laufen? Ich fand diese Frage:

php ssl curl: Objekt bewegt Fehler

, aber ich bin mit bash, nicht PHP. Was sind die entsprechenden Befehlszeilenoptionen oder Variablen zu setzen, dieses Problem in bash zu beheben?

(Ich möchte dies mit curl tun, nicht wget)

Edit: na ja, manchmal die Datei manuell herunterzuladen (über interaktive Shell) funktioniert, aber manchmal ist es nicht (ich immer noch das „Objekt bewegt hier“ Nachricht). So ist es keine ein speziell ein Problem mit cron Umwelt sein kann, aber mit curl selbst.

der cron-Eintrag:
    * * * * * ~/.class/test.sh >> ~/.class/test_out 2>&1

test.sh:

#! /bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/sbin
cd ~/.class

course="physics 1b"
url="http://www.registrar.ucla.edu/schedule/detselect.aspx?termsel=10S<URL>subareasel=PHYSICS<URL>idxcrs=0001B+++"

curl "$url" -sLo "$course".html  --max-redirs 5

Edit: Problem gelöst. Das Problem war die Streu-Tags in der URL. Es war, weil ich sed s,"<URL>",\""$url"\", template.txt > test.sh tun, um die Skripte zu generieren und sed alle Instanzen & mit dem regulären Ausdruck <URL> ersetzt. Nach der URL Festsetzung curl funktioniert.

War es hilfreich?

Lösung

Sie möchten die -L oder --location Option, die Serie 300 Umleitungen folgt. --maxredirs [n] wird begrenzen curl n Umleitungen.

Seine merkwürdig, dass diese Arbeiten von einer interaktiven Shell. Sind holen Sie die gleiche URL? Sie können immer versuchen, Ihre Umgebung Skripten in der cron-Eintrag Sourcing:

* * * * * . /home/you/.bashrc ; curl -L --maxredirs 5 ...

EDIT: die Beispiel-URL ist etwas anders als die, die im Drehbuch. $url im Skript hat ein zusätzliches Paar von <URL> Tags. Ersetzen sie mit & das herkömmliche Argument seperators für GET Anfragen, arbeitet für mich.

Andere Tipps

Ohne Ihren Skript zu sehen, es ist schwer zu erraten, was genau los ist, aber es ist wahrscheinlich, dass es sich um ein Umweltproblem ist, wie Sie vermuten.

Eine Sache, die oft hilft, ist, den vollständigen Pfad zu ausführbaren Dateien und Dateien in Ihrem Skript angeben.

Wenn Sie Ihr Skript und crontab-Eintrag zeigen, können wir mehr helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top