eccos01
Goto Top

Probleme mit Standard-FTP (ftp.exe) - PASV

Hallo zusammen,

ich habe ein problem mit dem Standard FTP von Microsoft (ftp.exe).

Folgende Verwendung:

Ich habe eine Batchdatei, die irgendwann ein FTP zu einem lokalen FTP-Server aufbaut und bestimmte Dateien herunterlädt.
Die Anweisungen werden aus einer Textdatei... die dynamisch für jeden client erstellt wird... ausgelesen.
Dynamisch weil die lokalen Pfad Angaben abweichen können.

Kommando: ftp -s:aktualisieren.ftp

Dieses verfahren gibt es schon seit Jahren und funktionierte eigentlich gut.
Server arbeitet unter Windows mit Filezilla-Server; der Client benutzt ftp.exe auf einem Windows-System.

In letzter Zeit gibt es immer wieder Probleme, dass Clients gar nicht oder plötzlich (keiner weiß, was sich geändert hat) die fehlermeldung "Can't open data connection" bekommen.

Das Phänomen tritt in der Regel nur dann auf, wenn Server (Filezilla-Server wird verwendet) und Client in unterschiedlichen Subnetzen sind.
Allerdings sind die Geräte aus beiden Richtungen per Ping erreichbar und es macht auch keinen Unterschied, ob die Firewall aktiviert (ftp.exe als Ausnahme eingetragen) oder ausgeschaltet ist.

Komischerweise funktioniert der Zugriff über den Windows-Explorer (ftp://ftpserver).
Der einzige Unterschied (wenn ich das Log des Servers anschaue... ist der PassivModus.

Jetzt das Hauptproblem... ftp.exe unterstützt das Kommando "PASV" nicht! Weiß einer, wie ich die verbindung trotzdem auf passiv setzen kann?

Alternativ:
Kennt einer geeigneten FTP-Client, der per Kommandodatei, Dateien im hintergrund herunterladen kann? Möglichst ähnliche Kommandos wie bei ftp.exe!

Viele Grüße

Content-ID: 160472

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

livetosuffer
livetosuffer 09.02.2011 um 16:48:24 Uhr
Goto Top
hi, benutze eine anderen Client, "wput" z.B. , nein man kann die Verbindung bei ftp.exe nicht trotzdem passiv setzen.

http://wput.sourceforge.net/

Achso, WinSCP halte ich auch für eine gute skriptbasierte Lösungsmöglichkeit.

gruß
eccos01
eccos01 09.02.2011 um 17:52:30 Uhr
Goto Top
hi, benutze eine anderen Client, "wput" z.B. , nein man kann die Verbindung bei ftp.exe nicht trotzdem passiv setzen.
http://wput.sourceforge.net/

runterladen wäre dann wget?

Achso, WinSCP halte ich auch für eine gute skriptbasierte Lösungsmöglichkeit.
WinSCP ist skriptbasiert? Kenne es bisher nur als Tool mit GUI.

Gruß
livetosuffer
livetosuffer 09.02.2011 um 18:12:09 Uhr
Goto Top
genau mit wget oder wput je nach dem wie deine Anforderung ist. Und ja, WinSCP bietet die Möglichkeiten die du benötigst...

http://winscp.net/eng/docs/scripting
livetosuffer
livetosuffer 09.02.2011 um 18:15:10 Uhr
Goto Top
mit CURL32 habe ich auch schon gearbeitet... Noch ne dritte (gute) Möglichkeit... http://curl.haxx.se/docs/manpage.html
eccos01
eccos01 15.02.2011 um 17:14:44 Uhr
Goto Top
So,
habe mir winscp.com ausgesucht und schon einiges probiert.

Aber mit dem synchronize hab ich Probleme (aus dem script heraus):

1.
Kommando "synchronize" mit Angabe der beiden Verzeichnissen im Kommando synchronisiert irgendwie nicht.
Aber wenn ich vorher in die jeweiligen Verzeichnisse wechsel und dann synchronize (ohne Eingabe der Verzeichnisse) klappt es.
Was kann das sein?

2.
Ich hatte mit der Option "-delete" beim synchronize geliebäugelt... aber ist mir jetzt etwas zu riskant.
Ich hatte beim verzeichniswechsel einen Tippfehler im Pfad. Das lcd-Kommando wurde abgelehnt... Pfad nicht gefunden.
Daraufhin hat "synchronize" das remote-Verzeichnis mit irgendeinem lokalen Verzeichnis (da wo FTP lokal grad steht) synchronisiert... alle remote-dateien rein und alle lokalen Dateien gelöscht.
Wenn er da auf Home gestanden hätte, wäre es sehr unglücklich gewesen.
Kann ich sowas verhindern? Kann ich in einem FTP-Skript Fehler abfangen?

Viele Grüße