automatisierter Download via FTP

AnMa

New Member
Hallo zusammen,

ich weiß nicht recht ob ich hier als nicht Serverbesitzerin willkommen bin, aber ich habe das Gefühl dass hier doch viele Ahnung haben und mir beim meinem Problem weiter helfen können.

Seit Wochen suche ich nun nach einer Lösung für mein Problem Daten per FTP automatisiert auf meinen Rechner herunter zu laden.

Lösungsansätze habe ich im Netz viele gefunden, aber ich hatte keine Chance es endgültig zum laufen zu bekommen. Im Moment hänge ich in diesem Script fest komme aber nicht weiter :(

nachrichten_001.bat
Code:
{syntaxhighlighter class="brush:bash"}
@echo off
C:
cd \Program Files (x86)\WinSCP
winscp.exe /console /script=D:\mAirList\Automation\XXXXXX\Nachrichten_001.txt /log=D:\mAirList\Automation\XXXXXX\SCP_BACKUP.log
{/syntaxhighlighter}

Nachrichten_001.txt
Code:
{syntaxhighlighter class="brush:bash"}
option batch on
option confirm off
open USER:_PASSWORT_@stream.XXXXXX.com:21
cd Nachrichten
option transfer binary
get * D:\XXXXXX\Nachrichten\*
close
exit
{/syntaxhighlighter}

und dann bekomme ich das folgende als Log-Ausgabe

Code:
. 2012-08-19 21:37:36.185 --------------------------------------------------------------------------
. 2012-08-19 21:37:36.185 WinSCP Version 4.3.2 (Build 1201) (OS 6.1.7601 Service Pack 1)
. 2012-08-19 21:37:36.185 Login time: Sonntag, 19. August 2012 21:37:36
. 2012-08-19 21:37:36.185 --------------------------------------------------------------------------
. 2012-08-19 21:37:36.185 Session name: USER@stream.XXXXXX.com
. 2012-08-19 21:37:36.185 Host name: stream.XXXXXX.com (Port: 21)
. 2012-08-19 21:37:36.185 User name: USER (Password: Yes, Key file: No)
. 2012-08-19 21:37:36.185 Tunnel: No
. 2012-08-19 21:37:36.185 Transfer Protocol: SFTP (SCP)
. 2012-08-19 21:37:36.185 Ping type: -, Ping interval: 30 sec; Timeout: 15 sec
. 2012-08-19 21:37:36.185 Proxy: none
. 2012-08-19 21:37:36.185 SSH protocol version: 2; Compression: No
. 2012-08-19 21:37:36.185 Bypass authentication: No
. 2012-08-19 21:37:36.185 Try agent: Yes; Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: No
. 2012-08-19 21:37:36.185 Ciphers: aes,blowfish,3des,WARN,arcfour,des; Ssh2DES: No
. 2012-08-19 21:37:36.185 SSH Bugs: -,-,-,-,-,-,-,-,-
. 2012-08-19 21:37:36.185 SFTP Bugs: -,-
. 2012-08-19 21:37:36.186 Return code variable: Autodetect; Lookup user groups: Yes
. 2012-08-19 21:37:36.186 Shell: default
. 2012-08-19 21:37:36.186 EOL: 0, UTF: 2
. 2012-08-19 21:37:36.186 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes
. 2012-08-19 21:37:36.186 LS: ls -la, Ign LS warn: Yes, Scp1 Comp: No
. 2012-08-19 21:37:36.186 Local directory: default, Remote directory: home, Update: No, Cache: Yes
. 2012-08-19 21:37:36.186 Cache directory changes: Yes, Permanent: Yes
. 2012-08-19 21:37:36.186 DST mode: 1
. 2012-08-19 21:37:36.186 --------------------------------------------------------------------------
. 2012-08-19 21:37:36.186 Looking up host "stream.XXXXXX.com"
. 2012-08-19 21:37:36.244 Connecting to XX.XXX.XXX.XXX port 21
. 2012-08-19 21:37:51.340 Waiting for data timed out, asking user what to do.
. 2012-08-19 21:37:51.340 Asking user:
. 2012-08-19 21:37:51.340 Der entfernte Rechner kommuniziert seit 15 Sekunden nicht.
. 2012-08-19 21:37:51.340 
. 2012-08-19 21:37:51.340 Weitere 15 Sekunden warten? ()
. 2012-08-19 21:37:51.340 Attempt to close connection due to fatal exception:
* 2012-08-19 21:37:51.340 Abgebrochen durch Benutzer.
. 2012-08-19 21:37:51.340 Closing connection.
. 2012-08-19 21:37:51.340 Sending special code: 12

Der FTP Server arbeitet mit Verschlüsselung: Explizites FTP über TLS - Was wohl das Problem darstellt?

Lieben Gruß
Anna
 
Du verwechselst SFTP mit FTP-S. Achtung, das sind zwei grundverschiedene Sachen! Dein FTP-Server will FTP-S und du sprichst ihn mit SFTP an. Das kann nicht klappen.
 
SFTP (SSH File Transfer Protocol) bedeutet FTP über SSH-Verbindung
FTPS (FTP over TLS) bedeutet FTP über SSL/TLS-Verbindung
 
Hallo Anna, natürlich bist Du hier sehr willkommen.

Ein Skript ist durchaus eine Möglichkeit, einen solchen Task anzugehen. Ich verwende für lokale wie entfernte Syncaufgaben lieber Software: http://allwaysync.com/de/index.html arbeitet mit FTP wie SSH Servern zusammen und kostet für private Verwendung erst mal nichts.
 
winscp kann sowohl FTPS als auch SFTP, du musst das korrekt auswählen.

Wenn du statt
Code:
open USER:_PASSWORT_@stream.XXXXXX.com:21
dann
Code:
 open ftps://USER:_PASSWORT_@stream.XXXXXX.com
bei FTPS bzw.
Code:
 open sftp://USER:_PASSWORT_@stream.XXXXXX.com
bei SFTP verwendest, benutzt winscp wohl das richtige Protokoll.

Siehe auch http://winscp.net/eng/docs/commandline
 
WOoow...

Also erstmal Danke für die liebe Aufnahme hier und dann gleich so viel Hilfe und auch noch für mich DAU so formuliert, dass ich es verstehe. :)

DANKE

Ich werde mal sehen wie ich welchen Beitrag umsetze und dann melde ich mich wieder ;)

LG
Anna
 
So, nun habe ich nochmal einige Versuche gestartet.

Zum einen mit Allway Sync:

Wenn ich das richtig gesehen habe geht bei Allway Sync nur FTP oder SFTP, aber kein FTPS und so wie ich das inzwischen verstanden habe ich das ja genau das was ich brauche?

Bei FTP bekomme ich danna uch sofort die Meldung zu einem ungültigen Passwort.




Zum anderen über das Script:

Hier habe ich jetzt die Zeile "open ...." entsprechend auf "open ftps://User:_passwort_@stream.XXXXXX.com:21" geändert.

Dem Logfile zur Folge bin ich damit auch einen Schritt weiter gekommen, aber noch nicht zum Ziel.

SCP_BACKUP.log:
Code:
. 2012-08-20 16:05:07.512 --------------------------------------------------------------------------
. 2012-08-20 16:05:07.512 WinSCP Version 4.3.9 (Build 1817) (OS 6.1.7601 Service Pack 1)
. 2012-08-20 16:05:07.512 Configuration: HKEY_CURRENT_USER\Software\Martin Prikryl\WinSCP 2\
. 2012-08-20 16:05:07.513 Local account: AnnaMaria-PC\Anna Maria
. 2012-08-20 16:05:07.513 Login time: Montag, 20. August 2012 16:05:07
. 2012-08-20 16:05:07.513 --------------------------------------------------------------------------
. 2012-08-20 16:05:07.513 Session name: USER@stream.XXXXXX.com (Modified stored session)
. 2012-08-20 16:05:07.513 Host name: stream.XXXXXX.com (Port: 21)
. 2012-08-20 16:05:07.513 User name: USER (Password: Yes, Key file: No)
. 2012-08-20 16:05:07.513 Tunnel: No
. 2012-08-20 16:05:07.513 Transfer Protocol: FTP
. 2012-08-20 16:05:07.513 Ping type: C, Ping interval: 30 sec; Timeout: 15 sec
. 2012-08-20 16:05:07.513 Proxy: none
. 2012-08-20 16:05:07.513 FTP: FTPS: Implicit SSL/TLS; Passive: Yes [Force IP: A]
. 2012-08-20 16:05:07.513 Local directory: default, Remote directory: home, Update: No, Cache: Yes
. 2012-08-20 16:05:07.513 Cache directory changes: Yes, Permanent: Yes
. 2012-08-20 16:05:07.513 DST mode: 1
. 2012-08-20 16:05:07.513 --------------------------------------------------------------------------
. 2012-08-20 16:05:07.840 Verbinde mit stream.XXXXXX.com ...
. 2012-08-20 16:05:07.886 Verbunden mit stream.XXXXXX.com, Etabliere SSL Verbindung...
. 2012-08-20 16:05:07.928 SSL_connect: error in SSLv2/v3 read server hello A
. 2012-08-20 16:05:07.928 Kann SSL verbindung nicht herstellen
. 2012-08-20 16:05:07.928 Verbindung zum entferneten Rechner abgebrochen
. 2012-08-20 16:05:07.928 Verbindung fehlgeschlagen.

Mit WinSCP selbst und FTP mit explizitem SSL oder TLS, aber auch mit SSL/TLS implizite Verschlüsselung komme ich problemlos auf den Server.

Kann ich eigentlich die für diesen Zweck gespeicherte Sitzung im WinSCP auch direkt mit dem Script aufrufen?
 
Wieso nimmst Du nicht das von vorne herein sichere SSH, wenns offensichtlich zur Verfügung steht? Da brauchts keine verschlüsselten FTP Klimmzüge. Und das geht dann auch wieder mit Allwaysync.
 
Ich muß vielleicht noch dazu sagen, dass ich auf die Vorgaben des FTP-Servers keinerlei Einfluß habe.

Hier heißt es ganz klar: "Vogel friß oder stirb." :(

Oder verstehe ich Dich jetzt gerade falsch?
 
Mit WinSCP selbst und FTP mit explizitem SSL oder TLS, aber auch mit SSL/TLS implizite Verschlüsselung komme ich problemlos auf den Server.

Hm, irgendwo habe ich das SSH da reingelesen. Wohl doch nicht vorhanden? Wäre in jedem Fall besser...
 
hmmm .... Das kann natürlich gut sein, denn WinSCP frägt ja beim ersten Verbinden immer nach ob man dem Server vertraut oder so was ... richtig?

Bei WinSCP findet man ja das Zertifikat und kann es in die Zwischenablage kopieren, nur wie ich das nun in das Script einbinde ist mir noch nicht so recht klar.

FTPS certificate signed by untrusted authority may also need to be verified. To automate the verification in script, use certificate switch of open command to accept the expected certificate automatically.
 
Ich frage jatzt mal ganz doof .. *peinlich*

Kannn ich diese Aktion denn nicht auch mit einem Tastaturmakro oder ähnlichem ausführen?

Also WinSCP mit einer Bestimmten Sitzung starten - Verzeichnisse wechseln - und synchonisieren ?
 
To automate the verification in script, use certificate switch of open command to accept the expected certificate automatically.

Ich kenn mich mit den Batch-Scripten von WinSCP nicht aus. Aber so wie ich das lese muss da nur eine Option in das Script und gut ist (mit dem Nachteil, dass kein Abgleich der Fingerprints erfolgt).
 
*lach* Ja, da bin ich mir auch sicher, dass das dort steht :)

Da ich aber nicht wirklich Ahnung davon habe, sind das für mich zum größten Teil unverständliche Angaben.

Ich hatte halt gehofft eventuell finale Hilfe zu ergattern :)

LG
Anna
 
Jippieeeeeeeeeeeeeeee :D:D:D:D:D:D

Ich habs tatsächlich selber geschafft. Ich als DAU ... :eek::confused:

Wenn ich alles fertig habe, werde ich die passende Lösung hier einstellen, damit nicht noch ein Thema mehr ohne Lösung im Netz kreist.

DANKE Euch für die tollen Denkanstöße

Alles Liebe
Anna
 
So, nach Stunden des Rumprobierens und diveser Tipps ist es mir tatsächlich gelungen einen automatischen FTP-Download einzureichten.

Sollte irgendwann nochmals jemand in die Verlegenheit kommen Daten automatisiert von einem explizit SSL verschlüsseltem FTP-Server laden zu müssen, schreibe ich hier mal eine ausführliche Anleitung. Ich schreibe das jetzt mal bewußt so, dass auch Dau's wie ich selbst es verstehen :) :

Benötigt wird:
  1. WinSCP - Dürfte eh bekannt sein - http://winscp.net/eng/docs/lang:de
  2. FTP-Zugangsdaten
  3. Fingerabdruck des Zertifikates
  4. Z-Cron - Ein sehr komfortables Tool um Batch-Datein zum gewünschten Zeitpunkt auszuführen. http://www.z-cron.de
  5. Batch-Datei
  6. Text-Datei

1. WinSCP - und der Fingerabdruck:
Für dieses Script muß WinSCP installiert und mittels diesem Programm mindestens einmal eine Verbindung aufgebaut worden sein, um an den "Fingerabdruck" zu kommen.
Die Einstellungen in der Sitzung wie folgt
Rechnername: Hier bitte die IP des Servers oder die entsprechende Domain eintragen.
Portnummer: 21 (Standard)
Benutzername: USER (aus den vorgegebenen Daten)
Kennwort: PASSWORD (aus den vorgegebenen Daten)
Protokoll: FTP - SSL explizite Verschlüsselung

Wenn die Verbindung steht, findet man unter "Befehle" - "Server/Protokoll Informationen" - Reiter "Protokoll"; den Fingerabdruck des Zertifikates. (xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx)


2. Die Batch-Datei: EXAMPLE.BAT
Code:
{syntaxhighlighter class="brush:bash"}
@echo off
C:
cd \Program Files (x86)\WinSCP
winscp.exe /console /script=C:\PFAD\ZUR\TEXT-DATEI\EXAMPLE.TXT /log=C:\PFAD\ZUM\LOGFILE\SCP.LOG
{/syntaxhighlighter}

Solllte die LOG-Datei nciht automatisch angelegt werden, dann einfach eine leere Text-Datei mit dem Namen SCP.LOG erstellen.


3. Die Text-Datei: EXAMPLE.TXT
Code:
{syntaxhighlighter class="brush:bash"}
option batch on
option confirm off
open ftps://USER:PASSWORD@RECHNERNAME:21 -explicitssl -certificate="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
cd EXAMPLE/ORDNER
option transfer binary
get * C:\PFAD\ZUM\EXAMPLE\ORDNER\*
close
exit
{/syntaxhighlighter}

Die Verzeichnispfade müssen an die jeweiligen Gegebenheiten auf dem FTP-Server oder dem eigenen Rechenr angepasst werden. Bei Linux-Servern bitte auf Groß- und Kleinschreibung achten.


4. Z-Cron und die Automation:
Wenn ihr Z-Cron installiert habt, legt ihr einfach einen neuen Auftrag an.
Erster Reiter "Z-Cron Auftrag": Hier reicht es, wenn ihr eine Bezeichnung für den Cron-Job vergebt, die Batch-Datei auswählt und "Auftrag ausführen" anhakt.
Zweiter Reiter " Zeitplanung": Einfach die entsprechende Konfiguration anlegen in der ihr den Download laufen lassen wollt.


Das wars auch schon ... :)

Ich hoffe ich konnte hiermit einigen Leuten helfen die wie ich nicht unbedingt das große Fachwissen haben.

Viel Spaß
Anna
 
Back
Top