[Cronjob] Url öffnen

deniz

Well-known member
25 März 2008
320
27
Hallo Leute,

ich habe seit neustem Confixx 3 Prof. und endlich auch Cronjobs.

Welchen Befehl muss ich eingeben, um eine Url auf zu rufen? In meinem Fall ist es ein Cron im VMS 1.2

Ich habe das hier mal versucht:


Leider bekomme ich eMails, mit folgendem Inhalt, nach dem der Cron "ausgeführt" wurde:

PHP:
--17:05:19-- https://www.Seitenname.de/cron.php?id=XX
=> `cron.php?id=XX'
Resolving www.Seitenname.de... Server - IP
Connecting to www.Seitenname.de|Server - IP|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
cron.php?id=XX: Permission denied

Cannot write to `cron.php?id=XX' (Permission denied).

Was läuft da schief?

Danke schonmal für jede Hilfe.

Mfg
 
wenn du die Webseite nicht brauchst nimm doch
Code:
 wget --spider www.example.org


kann sein das du auf dev/null kein schreib zugriff hast (glaub ich zwar nicht aber so hört sich die Fehlermeldung an)
 
Das & heisst, dass der wget-Befehl dort aufhört und in den Hintergrund geschickt (und weiterbearbeitet) wird. Im Vordergrund läuft dann unmittelbar der "Befehl" (was ja hier keiner ist) pw=XXXXXXXX > /dev/null.

Setz mal die komplette URL nach dem wget in Anführungszeichen, also
Code:
wget "https://www.Seitenname.de/cron.php?id=XX&pw=XXXXXXXX" > /dev/null
Dann wird das & nicht als Shell-Anweisung interpretiert.

Wenn Du direkt in (z.B.) der bash das ausführen würdest, was Du angegeben hattest, würdest Du übrigens als Rückgabe die Prozess-ID von dem wget-Teil (bis zum &) bekommen, sowie direkt danach die Ausführung des zweiten Teils (was überhaupt nichts zurückliefern sollte).
 
Wget wird benutzt um eine Datei herunterzuladen.
Es sollte lieber lynx(Browser) benutzt werden.
Code:
* * * * * lynx "https://irgendwas.tld/foo.cgi?bar=bla&foo=bar" > /dev/null
 
Wget wird benutzt um eine Datei herunterzuladen.
Es sollte lieber lynx(Browser) benutzt werden.
Und was bringt das?!
Dann brauchst du noch n zweiten Cronjob, der den Lynx aus dem ersten Cronjob nach ner Minute wieder abschießt :ugly:

Man benutzt eigentlich immer wget, um eine URL im Cronjob aufzurufen. Braucht man die Ausgabe nicht, kann man über einen HEAD-Request nachdenken. Der müsste auch das Script triggern und man spart sich, ne ganze Webseite ins schwarze-UNIX-Loch zu pipen :biggrin:

Anders und das wird wohl hier der Fall sein, ist es, wenn es um ein Script auf dem eigenen Server geht. Das kann man doch direkt ausführen und muss es nicht erst übers Netz schicken und empfangen (zahlt man da dann doppelt Traffic? :think:).
 
Wenn wget, dann mit --spider, da er sonst versucht, lokal zu speichern.
Daher auch der Fehler "cron.php?id=XX: Permission denied" aus dem 1. Post.

Ich nutze für lokale PHP-Scripte garkein HTTP-Request, sondern lass die Datei direkt von PHP abarbeiten. Zumindest so lang die Crons ihre eigenen PHP-Dateien haben.

Wenn es sich um einen fernen Server handelt, hat es bis jetzt immer "lynx -dump <url> >/dev/null" getan. Im Moment bin ich am überlegen, dafür immer cURL zu verwenden, da lynx auch mit dem -dump noch bisschen an der Seite "herumrendert", was ja nicht sein muss. ;)
 
Also auch

PHP:
wget "https://www.Seitenname.de/cron.php?id=XX&pw=XXXXXXXX" > /dev/null

bringt keinen Erfolg, gleiche Meldung wie im Post 1.
 
Wie shenziro schon schrieb, solltest Du --spider mit in den Aufruf reinnehmen, sonst versucht der Cronjob, die Datei irgendwo hinzuspeichern, was Du nicht darfst.

Alternativ kannste auch folgendes probieren, wenn curl zur Verfügung steht:
Code:
curl -Iso /dev/null <url>
 
Anders und das wird wohl hier der Fall sein, ist es, wenn es um ein Script auf dem eigenen Server geht. Das kann man doch direkt ausführen und muss es nicht erst übers Netz schicken und empfangen (zahlt man da dann doppelt Traffic? :think:).

der Router/Switch (an dem der Server angeschlossen ist) teilt mit, dass die angeforderte URL er selbst ist, von daher läuft es nicht erst über Netz sondern ruft sich eigentlich auch nur lokal auf - Traffic wird dafür keiner berechnet.
 
der Router/Switch (an dem der Server angeschlossen ist) teilt mit, dass die angeforderte URL er selbst ist, von daher läuft es nicht erst über Netz sondern ruft sich eigentlich auch nur lokal auf - Traffic wird dafür keiner berechnet.

Wenn es der Router/Switch empfängt, an dem der Server an einen Port angeschlossen ist, zahlt man schon, da der Hoster i.d.R. die Traffic-Daten jedes Ports des Switches pollt.

Aber die IP-Adresse auf die zugegriffen wird ist nach der Routing-Tabelle im Rechner der Rechner selbst. Deshalb wird das Paket nicht den Kernel verlassen und zur Netzwerkkarte wandern, sondern direkt vom Kernel wieder in die Empfangsqueue gesteckt werden, da der Kernel für das Routing verantwortlich ist. (Bei jedem Paket etwa die Frage: "An Welches Netzwerk-Interface muss das Paket?")