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-Key: 260612

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: wiesi200
wiesi200 Jan 21, 2015 at 12:49:15 (UTC)
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.
Member: Philosoph
Philosoph Jan 21, 2015 at 12:56:31 (UTC)
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...
Member: Lochkartenstanzer
Lochkartenstanzer Jan 21, 2015 at 13:16:56 (UTC)
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
Mitglied: 117643
117643 Jan 21, 2015 updated at 14:51:48 (UTC)
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)
Member: Bachti
Bachti Jan 22, 2015 at 08:36:15 (UTC)
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)!
Member: Philosoph
Philosoph Jan 23, 2015 at 02:14:28 (UTC)
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
Member: Lochkartenstanzer
Lochkartenstanzer Jan 23, 2015 at 07:51:18 (UTC)
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
Member: Philosoph
Philosoph Feb 01, 2015 at 13:06:30 (UTC)
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
Member: Lochkartenstanzer
Lochkartenstanzer Feb 01, 2015 at 13:10:26 (UTC)
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.