it-swarm.com.de

Mein FTP-Batch-Skript bleibt bei "200 PORT-Befehl erfolgreich" hängen und lädt die Dateien nicht auf den Server hoch

Ich habe alles ausprobiert, was ich in den Google-Ergebnissen gefunden habe

200 PORT-Befehl erfolgreich

aber nichts hat geholfen.

Kann jemand helfen, dieses Problem zu lösen, bitte?

Der Code von "runScript.bat:

ftp -s:"C:\automation\fileup.bat" myserver.com

Der Code von "fileup.bat:

username
password
ascii
cd "/public_html/reports/"
lcd "C:\automation\tests\HtmlReporter"
Prompt
mput *
disconnect
close
bye

Das Konsolenprotokoll:

C:\automation>ftp -s:"C:\automation\fileup.bat" myserver.com
Connected to myserver.com.
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 7 of 500 allowed.
220-Local time is now 04:40. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 3 minutes of inactivity.
User (server26.000webhost.com:(none)):
331 User username OK. Password required

230-OK. Current restricted directory is /
230-449 files used (4%) - authorized: 10000 files
230 16742 Kbytes used (1%) - authorized: 1536000 Kb
ftp> ascii
200 TYPE is now ASCII
ftp> cd "/public_html/reports/"
250 OK. Current directory is /public_html/reports
ftp> lcd "C:\automation\tests\HtmlReporter"
Local directory now C:\automation\tests\HtmlReporter.
ftp> Prompt
Interactive mode Off .
ftp> mput *
200 PORT command successful

Der Fehler in Bezug auf WinSCP (für Martin) ":

C:\Users\idan>cd c:\automation\

c:\automation>runFTP.bat

c:\automation>winscp.com /command     "open ftp://user:[email protected]/"     "cd /public_html/reports/"     "lcd C:\automation\tests\HtmlRepo
rter"     "put *"     "exit"
'winscp.com' is not recognized as an internal or external command,
operable program or batch file.

c:\automation>
7
Idan E

Dies scheint ein typisches Problem im aktiven FTP-Modus zu sein. Der Server kann keine Verbindung zu Ihrem Computer herstellen, um eine Datenübertragungsverbindung herzustellen.

Dies geschieht normalerweise, da sich heutzutage die meisten Client-Computer hinter einer Firewall oder NAT oder beidem befinden, was die Funktion des aktiven FTP-Modus verhindert. Damit der aktive Modus funktioniert, müssen Sie Ihre Firewall öffnen (nicht empfohlen) und/oder Routing-Regeln für NAT konfigurieren.

Siehe meinen Artikel über FTP-Modi und das Konfigurieren des Netzwerks für den aktiven Modus .


Oder Sie verwenden den passiven FTP-Modus. Der Windows ftp.exe-Client unterstützt den passiven Modus jedoch nicht, was ihn heutzutage ziemlich nutzlos macht.

Sie müssen also einen anderen Befehlszeilen-FTP-Client verwenden. Ein Großteil der FTP-Clients unterstützt den passiven Modus.

Zum Beispiel mit WinSCP würde Ihr runScript.bat so aussehen:

winscp.com /command ^
    "open ftp://username:[email protected]/" ^
    "cd /public_html/reports/" ^
    "lcd C:\automation\tests\HtmlReporter" ^
    "put *" ^
    "exit"

Beachten Sie, dass WinSCP standardmäßig den passiven Modus verwendet.

Weitere Informationen finden Sie in den WinSCP-Handbüchern für:

(Ich bin der Autor von WinSCP)

11
Martin Prikryl

Ich hatte genau das gleiche Problem ("200 PORT-Befehl erfolgreich" blieb für immer auf dem Bildschirm hängen) und konnte es lösen.

Erstens gibt es viele Beiträge im Internet, die besagen, dass Windows ftp.exe den passiven Modus nicht unterstützt. Das ist nicht wahr:

ftp> quote pasv

227 Aktivieren des passiven Modus

In meinem Fall hatte ich einen Windows 2012 R2 Server mit einer echten IP. Das Umschalten in den passiven Modus löste das Problem nicht, ich blieb immer noch bei "200 PORT-Befehl erfolgreich" hängen. Zur gleichen Zeit hat WinSCP gut funktioniert. Die Lösung bestand darin, eine eingehende Firewall-Regel zu erstellen, die externe Verbindungen vom FTP-Server zur lokalen Datei ftp.exe zuließ.

1
Sergei Tche