FTP-Client auf DS soll selbständig Daten laden

Status
Für weitere Antworten geschlossen.

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
OK, habs nun hingekriegt!
Danke itari! Funktioniert wohl jetzt GENAU so wie ichs mir vorgestellt habe!;)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Schön :)

Dann kannst das ja nochmal genau beschreiben, was du wolltest und wie es jetzt geht - für andere und mich :D

Danke schon im voraus

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Klar!

Die Situation:
Ich habe einen FTP-Account für einen Server eines Freunds, der dort in 2 Ordnern täglich Daten reinschiebt. Bisher musste ich den Transfer vom Server stehts von Hand mit einem Client erledigen.

Was ich wollte:
Die Daten, die in den beiden Ordnern liegen zusammengefasst in einem lokalen "Download"-Ordner sammeln.

Lösung:
Crontab in /etc/crontab wie folgt editiert:
Rich (BBCode):
#minute        hour        mday        month        wday        who        command
15/45          *           *           *            *           root       wget -c -r -nH --cut-dirs=1 -P../volume1/download ftp://user: PW@IP.DES.FTP.SERVERS/Ordner1/*
15/45          *           *           *            *           root       wget -c -r -nH --cut-dirs=1 -P../volume1/download ftp://user: PW@IP.DES.FTP.SERVERS/Ordner2/*

Damit wird die Ordnerstruktur wie auf dem Server beibehalten (speziell für gesplittete Dateien hilfreich). Dabei wird wget zu jeder Stunde um xy.15 und xy.45 ausgeführt, also 2mal/h.
-c ist für das Fortfahren unkompletter Dateien. -nH steht für die Deaktivierung des Ordners "IP.DES.FTP.SERVERS", welcher ansonsten im "Download"-Ordner angelegt werden würde. --cut-dirs=1 hilft beim Weglassen der "Ordner1" und "Ordner2" (wie auf dem FTP, was ich ja nicht wollte). Und -P steht für das Zielverzeichnis des Downloads.

So, hoffe, dass nun gewisse Leute das auch hinkriegen, denn so mach die DS echt Spass und macht das Leben leichter!;)

An dieser Stelle möchte ich dir, itari, nochmals meinen Dank aussprechen. Nur deine Hilfe hat das möglich gemacht! Vielen, vielen Dank! Weiter so!
Aufgrund dieser (ersten) guten Erfahrung werde ich das Forum öfters besuchen und das eine oder andere an meiner DS anwenden.;)


Woran ich jetzt noch arbeite ist eine Batch fürs Stoppen aller aktiven wget und eine zum stoppen der crond...
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
killall wget; killall crond :)
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ja, dass weiss ich mittlerweile schon...
Ich möchte jedoch eine Batch-Datei erstellen, wodurch dann automatisch eine telnet-Verbindung aufgebaut wird, meine Login-Daten eingegeben werden und dann die jeweiligen Konsolenbefehle eingegeben werden. Dann muss ich am Schluss nur noch Doppelklicken und die Sache ist geritzt. Kennst du dich damit aus?
 

_TokTok_

Benutzer
Mitglied seit
18. Nov 2007
Beiträge
1.310
Punkte für Reaktionen
0
Punkte
0
Soweit ich weiß, kann man den Windows Telnet Client nicht automatisieren. Aber es gibt eine reihe an Freeware-Tools die das können
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Soweit ich weiß, kann man den Windows Telnet Client nicht automatisieren. Aber es gibt eine reihe an Freeware-Tools die das können

Ja der Windows-Telnet ist doof. Welche Freeware-Tools kennst denn da?

Ansonsten ist das mit der Fernsteuerung der DS von Windows aus, bescheiden. Die üblichen Tools (rshell, rlogin, rcp) sind leider mit ihren Server-Komponenten (rshd, rlogind, rcpd) nicht auf der DS vorhanden (auch nicht per ipkg nachinstallierbar).

itari
 

_TokTok_

Benutzer
Mitglied seit
18. Nov 2007
Beiträge
1.310
Punkte für Reaktionen
0
Punkte
0
Als ich ähnliches vorhatte, bin ich z.B. auf "Automatic Telnet Client" und "Automize" gestoßen.
Habs allerdings nie selbst getestet, da ich keine Lust hatte das mir das 500. Teil auf den Rechner zu laden. Batch wäre zu schön gewesen.....
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wenn die normalen Dinge nicht gehen, ist es immer eine Frage, ob man sich mit irgend einem Bastel-Tools beschäftigen soll. Da geb ich dir völlig Recht.

Da ich hauptsächlich von einem Vista-Laptop aus arbeite, hab ich mir das ein oder andere als Vista-Gadget gemacht. Das sind lokal laufende HTML-Strecken, die noch ein wenig von MS mit Funktionalität angereichert wurden. Damit ruf ich dann per AJAX PHP-Seiten von anderen Rechnern auf und da PHP ja auch executen kann, hab ich somit meine Fernsteuerung. Aber wie gesagt, läuft hält wie in einem Mini-Browser ... ist nicht die Kommandozeile.

itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Jetzt ists ziemlich genau 2 Jahre her, dass ich das Problem auf meiner DS107+ gelöst hatte.
Mittlerweile ist eine DS1010+ dazugekommen, die jetzt auch diese Aufgabe übernehmen soll. Jedoch bin ich da wo stecken geblieben: Der cronjob läuft nicht an. Ich hab die crontab-Datei der 107+ auf die 1010+ kopiert, /usr/syno/etc/rc.d/S04crond.sh start/stop, killall crond und wieder gestartet, auch Neustart der DS hat nichts gebracht.
Auch in itari's cronjobs-Tool ist alles korrekt erfasst.

Wenn ich die Befehle über telnet gebe, fängt der Prozess auch korrekt an, es liegt also nicht an den Zielverzeichnissen oder freigegebenen Ports oder ähnlich.

Was kann ich da tun?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Was kann ich da tun?

Oft liegt es an dem Vergessen, dass der crond keine richtige Umgebung hat, und daher nicht auf eine ordentlich gesetzte PATH-Variable zurückgreifen kann. Man muss also immer die kompletten Pfade angeben. Das könnte auch hier die Ursache sein. Post doch einmal den Inhalt deiner crontab, dann kann man sich das anschauen.

Itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ich hab ja die crontab der DS107+ (wos ja jetzt 2 Jahre wunderbar funktioniert hat) genommen. Die Pfade sind dieselben und funktionieren über telnet auch.

Rich (BBCode):
#minute	hour	mday	month	wday	who	command
1	*	*	*	*	root	wget -c -r -nH --cut-dirs=2 -P../volume1/download/ordner1 ftp://user:pw@ip/ordner1/*;wget -c -r -nH --cut-dirs=2 -P../volume1/download/ordner2 ftp://user:pw@ip/ordner2/*
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Jemand eine idee? Sind die pfade nicht ok?
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Was meint ihr dazu? Was kann ich machen?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Du kannst einen doofen 2. Job in die crontab nach deinem wget erfassen und kontrollieren, ob dieser dann ausgeführt wird. Damit kannst ausschließen, dass es ein Fehler in der crontab ist.

Du kannst auch mal den IPKG-wget* versuchen (Pfad) und damit mal testen, ob du vielleicht den falschen wget genommen hast/hattest

*den hast ja automatisch, wenn du den IPKG-Boottrap installiert hast.

Itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
So, bin leider erst jetzt dazugekommen mir das Problem nochmals anzusehen.

Den Tipp mit dem Dummybefehl hab ich befolgt und da tat sich nichts, es liegt also an der crontab... Was kann ich da machen?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Kann es sein, dass cron das wget Kommando nicht findet? Schonmal mit der kompletten Pfadangabe zu wget versucht?
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Linux-Zeilenenden und TABs auch kontrolliert? Wenn irgendwo an der falschen Stelle Leerstellen drinne sind, dann mag der crond auch nicht ...

Itari
 

Tazzler

Benutzer
Mitglied seit
21. Aug 2008
Beiträge
173
Punkte für Reaktionen
0
Punkte
16
Ich glaube die Prozesse wurden jeweils nicht immer korrekt beendet/gestartet.

Habe jetzt mal gut 5min nahc einem /usr/syno/etc/rc.d/S04crond.sh stop gewartet und erst dann wieder gestartet. Folgerung: Funktioniert jetzt. Habe sonst aber auch fast 1min gewartet, etwas komisch... :S
Aber scheint jetzt zu laufen.

Lag also auch nicht am wget, hatte die crontab nämlich auch mit einem Kopierauftrag gespickt, welcher auch nicht lief.
 

Synder

Benutzer
Mitglied seit
28. Aug 2010
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Die /etc/crontab ist per symbolischen Link mit einer anderen Datei verknüpft und diese andere Datei wird eigentlich vom crond benutzt. Das heißt, man sollte die /etc/crontab nicht löschen, sondern nur ändern.

Das könnte ein wichtiger Hinweis sein, denn mir ist schon häufiger aufgefallen, dass viele Windows-Produkte beim Ändern einer Datei diese tatsächlich löschen und neu schreiben.

Tazzler könnte das also passiert sein, ohne dass er das veranlasst oder merken hätte können.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat