philosoph
Goto Top

Stündlich entfernte Datei herunterladen und erneut hochladen

Hallo alle zusammen!

Ich möchte automatisiert (alle 59 Minuten) eine Datei von einem FTP-Server herunterladen und diese auf einen anderen FTP-Server hochladen.

Mein Lieferant stellt dazu die Datei "Items.csv" auf seinem FTP-Server zur Verfügung.
Diese Datei lade ich aktuell mit einem FTP Programm herunter und lade sie dann auf meinen FTP-Server hoch.
Im Anschluss rufe ich im Browser Magmi auf und importiere die neuen Lagerbestände in meinen Magento Webshop.

Magmi lässt sich aber auch automatisieren durch: wget "http://domain/magmi/web/magmi_run.php?mode=update&profile=bestand&engine=magmi_productimportengine:Magmi_ProductImportEngine" -O /dev/null

Nun möchte ich aber nicht ständig meinen PC oder Laptop eingeschaltet lassen. Ich möchte das ganze serverseitig lösen. Ich dachte da an Cronjobs bzw. SSH.

Der Ablauf wäre dieser:
1. Alle 59 Minuten Verbindung zum Remote Server aufbauen und Datei auf den eigenen Server kopieren.
2. Ist der Vorgang abgeschlossen, wird dieser Befehl ausgeführt:
wget "http://domain/magmi/web/magmi_run.php?mode=update&profile=bestand&engine=magmi_productimportengine:Magmi_ProductImportEngine" -O /dev/null

Hat jemand so etwas bereits umgesetzt? SSH? Cronjobs oder doch ganz anders? Ich wäre über jeden Hinweis dankbar.


LG
Tommy

Content-ID: 260612

Url: https://administrator.de/contentid/260612

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

wiesi200
wiesi200 21.01.2015 um 13:49:15 Uhr
Goto Top
Hallo,

SSH ist erst mal nur ein Protokoll. Das kann alleine eigentlich überhaupt nicht's.

CronJobs sind da eher deine Anlaufstelle. Wenn du bei deinem Webserver sowas einrichten kannst, dann könntest du erst mal per Wget die Datei laden und dann das Script ausführen.

Das ist dann einfach.
Philosoph
Philosoph 21.01.2015 um 13:56:31 Uhr
Goto Top
Hallo!

Danke erst einmal für den Hinweis.
Ich habe auf meinem Server einen SSH Zugang. Ich kann auch Cronjobs einrichten.

Weißt du, wie die Befehle für Download & Upload der Datei lauten müssen und wie ich es mit dem Script für das Tool stündlich einmal ausführen kann?

Ich komme da leider nicht weiter...
Lochkartenstanzer
Lochkartenstanzer 21.01.2015 um 14:16:56 Uhr
Goto Top
moin,

das ist ein typischer fall für einen cronjob.

man köntne sas z.B. mit wget herunterladen und mit scp hochladen

oder irgendein scriptfähiges ftp-Programm dere es dutzende unter linux gibt.

oder curl, wenn man sich verkünsteln will.

lks
117643
117643 21.01.2015 aktualisiert um 15:51:48 Uhr
Goto Top
Kannst du folegnden Befehl bei deinem Cronjob durchführen?:
wget "http://domain/magmi/web/magmi_run.php?mode=update&profile=bestand&a ..." -O /dev/null

Dann brauchst du nur einen zweiten (der davor läuft):
wget --user=ftpuser--password='myPassword' ftp://file.in/protected/area/items.csv -P /pfad/zum/importverzeichnis

(http://wiki.ubuntuusers.de/wget)
Bachti
Bachti 22.01.2015 um 09:36:15 Uhr
Goto Top
cronjob ist das Stichwort.
Prüfe mal noch, ob das Ganze wirklich alle 59 Minuten stattfinden MUSS (echt frickelig zu programmieren, wenn man sich nicht vertun will) oder auch einmal je Stunde passieren könnte (geht mit cron kaum einfacher)!
Philosoph
Philosoph 23.01.2015 um 03:14:28 Uhr
Goto Top
Guten Morgen alle zusammen!

Das ganze kann natürlich auch einmal pro Stunde laufen! Aber wie das ganze ablaufen muss bzw. "zusammen gebaut" wird, bleibt mir leider noch verborgen. face-sad

Hat jemand einige Beispiele zum Arbeiten oder hat so etwas bereits umgesetzt?

Lieben Gruß
Tommy
Lochkartenstanzer
Lochkartenstanzer 23.01.2015 um 08:51:18 Uhr
Goto Top
Zitat von @Philosoph:

Guten Morgen alle zusammen!

Das ganze kann natürlich auch einmal pro Stunde laufen! Aber wie das ganze ablaufen muss bzw. "zusammen gebaut"
wird, bleibt mir leider noch verborgen. face-sad

Moin,

einfach ein bash-script schreiben mit, z.B. in ~/bin/transfer.sh

<code type0plain>
#!/bin/bash

wget -O $zielverzeichnis ftp://server/pfad/datei
wget "http://domain/magmi/web/magmi_run.php?mode=update&profile=bestand&a ..." -O /dev/null


und dann mit crontab -e als Job eintragen (Zeile hinzufügen):

23 * * * * ~/bin/transfer.sh

Das ist quasi das Grundgerüst. Du solltest aber ncih ein paar Fehlerchecks und Plausibilitätsprüfungen einbauen.

lks
Philosoph
Philosoph 01.02.2015 um 14:06:30 Uhr
Goto Top
Hallo nochmal!

Gibt es hier jemand, der das ganze als Auftrag übernehmen möchte? Gesucht wird also ein Freelancer mit entsprechender Erfahrung in Crontab und SSH...

Ich würde mich über eine PN oder Antwort hier sehr freuen.

Lieben Gruß
Tommy
Lochkartenstanzer
Lochkartenstanzer 01.02.2015 um 14:10:26 Uhr
Goto Top
Zitat von @Philosoph:

Gibt es hier jemand, der das ganze als Auftrag übernehmen möchte? Gesucht wird also ein Freelancer mit entsprechender
Erfahrung in Crontab und SSH...

Ich würde mich über eine PN oder Antwort hier sehr freuen.

Wenn Du Dir mich leisten kannst. face-smile

lks

PS: Ich melde mich später.