Ich möchte in regelmäßigen Abständen eine Datendatei von einem entfernten FTP-Server auf meinen Computer herunterladen. Sobald die Datei heruntergeladen ist, möchte ich ein anderes Skript aufrufen, das die Datei verarbeitet.
Meine Entwicklungsmaschine ist Mac OS X, die spätere Bereitstellungsumgebung ist Linux.
im Detail:
Es gibt einen öffentlichen FTP-Remote-Server, der vom Wetteramt betrieben wird und auf dem das Wetteramt Dateien mit Wettervorhersagen veröffentlicht. Dies ist nicht meine Maschine, ich kann nur von ihr herunterladen. Das Wetteramt legt hier alle sechs Stunden eine neue Datei an, die Uhrzeit ist Bestandteil des Dateinamens. Ich werde ein Tool auf meinem Computer haben, das die Daten in diesen Dateien verarbeiten kann. Ich bitte nicht um Hilfe bei der Entwicklung dieses Tools. Ich bitte um Hilfe beim Zusammenkleben der Teile, beim Planen der Downloads und der Ausführung des Tools.
Was ich machen will; was ich vorhabe zu tun:
Alle sechs Stunden möchte ich die neue Datei vom FTP-Server des Wetterdienstes herunterladen. Wenn dies fehlschlägt, möchte ich: eine E-Mail senden und den Download neu planen.
Wenn der Download nach sechs Stunden immer noch fehlschlägt, möchte ich aufhören, diese Datei abzurufen, da jetzt eine neue Datei mit einem neuen Namen vorhanden sein sollte.
Sobald die Datei erfolgreich heruntergeladen wurde, möchte ich mein Tool aufrufen, um die Datei zu verarbeiten. Wenn das Tool fehlschlägt, weil die Datei beschädigt ist, wird ein Fehler zurückgegeben, und ich möchte die Datei für den Download neu planen
Was wäre die Standardmethode, um dies zu automatisieren?
Ich weiß, dass ich Cron verwenden kann, um das Einrollen für den Download zu planen und ein Skript auszuführen, das die heruntergeladene Datei in regelmäßigen Abständen verarbeitet, und ich weiß, dass ich ein etwas komplexeres Skript oder eine Anwendung schreiben kann, die dies erledigt und Fehlerbehandlung, Neuplanung und Fehlerbehebung hinzufügt Senden von Status-E-Mails.
Eine meiner Anforderungen für dieses Projekt ist es, so wenig benutzerdefinierten Code wie möglich zu schreiben. Stattdessen sollte ich versuchen, vorhandene Standardtools zu verwenden und, wenn ich Code schreiben muss, den einfachsten Code zu schreiben . Der Grund dafür ist, dass der Code möglicherweise auf einer großen Anzahl von Computern installiert wird, die alle von verschiedenen Personen optimiert, angepasst und gewartet werden müssen, lange nachdem ich aus dem Projekt verschwunden bin, damit ich sie gut nutzen kann dokumentierte, gut unterstützte Tools so weit wie möglich.
Dies scheint eine so häufige Aufgabe zu sein, dass es Tools und Skripte im gesamten Internet geben muss, die von Leuten geschrieben wurden, die sorgfältig überlegt haben, was möglicherweise schief gehen könnte, wenn Sie eine Datei in regelmäßigen Abständen fehlerfrei von einem Remote-Server herunterladen und verarbeiten müssen Bearbeitung, Umplanung und Versand von Statusmeldungen.
Ist das, wofür 'Expect' ist?
Was würden Sie empfehlen?