Cronjob: Logfiles

Da ich zwischenzeitlich drei Webpacks bei Hosteurope betreut habe und alle Logfiles archiviere, wurde ist mir es zu aufwendig geworden die Logfiles einzeln runterzuladen - also habe ich mir dieses kleine Script geschrieben, dass per Cronjob aufgerufen werden kann und automatisch alle vorhandenen Logfile- und Statistik-Archiv herunterläd.
Da die einzelnen Archive per HTTP heruntergeladen werden, kann es sein, dass das Script relativ lange läuft, es sollten also nicht allzuviele Dateien auf einmal heruntergeladen werden (2 Webpacks mit den Archiven von 2 Monaten lassen sich aber runterladen, wenn das Script einmal die Woche läuft, sollte es kein Problem darstellen). Dadurch dass die Dateien per HTTP heruntergeladen werden (müssen), muss die PHP-Einstellung allow_url_fopen aktiviert sein, wobei das Script aber selbst versucht diese Einstellung zu aktivieren sofern sie deaktiviert ist.
Beim Herunterladen der Archive vom Server wird der Inhalt des Archivs stückweise direkt in die lokale Datei geschrieben, womit auch das herunterladen von größeren Dateien kein Problem sein sollte, allerdings muss besonders bei größeren Logfilearchiven darauf geachtet werden, dass der Speicherplatz nicht zu schnell voll wird.
Hinweis: da das Script dafür gedacht ist, per Cronjob ausgeführt zu werden und dabei idR die Rückgabe nicht ausgewertet wird, gibt das Script am Ende nur »fertig« aus.

Konfiguration

Im Kopf des Scriptes gibt es 5 Variablen mit denen das Verhalten des Scriptes beeinflusst werden kann:

  1. $zugaenge: in diese Variable werden die Zugangsdaten zum KIS eingegeben, wobei jedes Array für einen Satz Zugangsdaten steht. Kundennummer und Passwort sind die Daten die beim Einloggen ins KIS eingegeben werden müssen und die Webpack-ID ist die ID die dem Webpack zugeordnet ist. Diese ID findet sich bei neueren Webpacks unter »Administration -> Webhosting« in der Liste unter dem Punkt »Paketname«, bei ganz alten Webpacks muss man sich die ID aus der URL holen wenn man im KIS ist (der Parameter »wp_id«).
    Der Wert »projekt1« identifiziert das Projekt und darf nur aus Kleinbuchstaben und Zahlen bestehen. Es können beliebig viele Projekte angelegt werden, dabei muss aber darauf geachtet werden, dass die Arrays den Syntaxregeln von PHP entsprechen (zwischen den Array-Elementen ein Komma, nach dem letzten keines mehr)
  2. $pfad: Der Pfad zu dem Verzeichniss in dem die Archive liegen - unterhalb dieses Pfades muss für jedes Projekt ein Verzeichnis liegen, das für PHP beschreibbar ist und das so heißt wie der Projektname in $zugaenge
  3. $emailempfaenger: an die hier angegebene Adresse wird beim Ausführen des Scriptes eine Mail mit einer Liste der heruntergeladenen Dateien geschickt. Wenn die Variable leer ist, wird keine Mail verschickt.
  4. $fparameter: Je nach Provider ist es nötig als 5. Parameter den Wert "-f <gueltigeemailadresse>" an mail() zu übergeben - diese Adresse kann hier eingegeben werden (wenn die Variable leer ist, wird der 5. Parameter nicht gesetzt, wenn hier ein Wert drin steht, wird er auch als Absender verwendet)
  5. $erlaubteips: hier kann angegeben werden von welchen IPs aus der Cronjob aufgerufen werden darf (mit Komma getrennt), wenn die Variable leer gelassen wird, kann der Cronjob von jeder IP aufgerufen werden.

Download

cronjob-logfiles-v2-3.php.txt - den Inhalt der Datei einfach als .php-Datei speichern.

Lizenz

Das Script steht unter der GNU General Public License