2016-05-07 4 views
0

Ich habe einen FTP-Server auf einem Windows Server 2012-Rechner und ich versuche, setup.exe daraus zu bekommen.FTP-Befehl in Windows hängt mit "150 Öffnen von Datenkanal für Dateidownload vom Server von ..."

CMD.EXE log:

C:\>ftp 1.2.3.4 
Connected to 1.2.3.4. 
220-FileZilla Server version 0.9.45 beta 
220-written by Tim Kosse ([email protected]) 
220 Please visit http://sourceforge.net/projects/filezilla/ 
User (1.2.3.4:(none)): my_username 
331 Password required for my_username 
Password: 
230 Logged on 
ftp> get setup.exe 
200 Port command successful 
150 Opening data channel for file download from server of "/setup.exe" 
.. and stays like this 

CMD.EXE log 2:

C:\>ftp 1.2.3.4 
Connected to 1.2.3.4. 
220-FileZilla Server version 0.9.45 beta 
220-written by Tim Kosse ([email protected]) 
220 Please visit http://sourceforge.net/projects/filezilla/ 
User (1.2.3.4:(none)): my_username 
331 Password required for my_username 
Password: 
230 Logged on 
ftp> quote cwd/
250 CWD successful. "/" is current directory. 
ftp> quote TYPE I 
200 Type set to I 
ftp> QUOTE PASV 
227 Entering Passive Mode (185,7,63,37,115,151) 
ftp> RETR setup.exe 
Invalid command. 
ftp> QUOTE RETR setup.exe 
425 Can't open data connection for transfer of "/setup.exe" 
ftp> get setup.exe 
200 Port command successful 
150 Opening data channel for file download from server of "/setup.exe" 
Aborting any active data connections... 
Aborting any active data connections... 
Connection closed by remote host. 
ftp> quote get setup.exe 
Not connected. 
ftp> 

FileZilla log:

Status: Connection established, waiting for welcome message... 
Response: 220-FileZilla Server version 0.9.45 beta 
Response: 220-written by Tim Kosse ([email protected]) 
Response: 220 Please visit http://sourceforge.net/projects/filezilla/ 
Command: AUTH TLS 
Response: 502 SSL/TLS authentication not allowed 
Command: AUTH SSL 
Response: 502 SSL/TLS authentication not allowed 
Status: Insecure server, it does not support FTP over TLS. 
Command: USER my_username 
Response: 331 Password required for my_username 
Command: PASS ************** 
Response: 230 Logged on 
Status: Logged in 
Status: Starting download of /setup.exe 
Command: CWD/
Response: 250 CWD successful. "/" is current directory. 
Command: TYPE I 
Response: 200 Type set to I 
Command: PASV 
Response: 227 Entering Passive Mode (185,7,63,37,98,242) 
Command: RETR setup.exe 
Response: 150 Opening data channel for file download from server of "/setup.exe" 
Response: 226 Successfully transferred "/setup.exe" 
Status: File transfer successful, transferred 5,120 bytes in 1 second 

Warum es mit FileZilla funktioniert aber nicht mit Windows FTP aus Befehlszeile?

Mehr als das würde ich einen Befehl wünschen, der einmal ausgeführt wurde, würde diese Datei von diesem FTP herunterladen, ohne das Passwort zu fragen.

Irgendwelche Ideen?

Danke.

Antwort

3

Es funktioniert in FileZilla, weil FileZilla standardmäßig den passiven FTP-Modus verwendet, der mehr Firewall/NAT-freundlich ist. Der Windows FTP-Befehlszeilenclient (ftp.exe) verwendet nicht nur den aktiven Modus, sondern unterstützt auch den passiven Modus in jeder Windows-Version. Es macht es heutzutage wegen der allgegenwärtigen Firewalls und NATs ziemlich nutzlos.

Lesen Sie meinen Artikel über die active and passive FTP connection modes, um zu verstehen, warum der passive Modus ein Muss ist.


Verwenden Sie stattdessen einen anderen Windows FTP-Befehlszeilenclient. Die meisten anderen unterstützen den passiven Modus.

Zum Beispiel WinSCP Standard auf den passiven Modus und es gibt eine Anleitung zum Konvertieren Windows FTP script to WinSCP script.

Sie können speziell eine Batch-Datei (.bat) wie verwenden:

winscp.com /command^
    "open ftp://my_username:[email protected]/"^
    "get setup.exe"^
    "exit" 

(ich bin der Autor von WinSCP)

+0

danke für die Antwort, aber ich war auf der Suche nach einem Befehl das würde keine anderen installierten Programme benötigen, vielleicht muss ich ein C# -Programm machen, das das macht ... –

+0

Dann müssen Sie Ihr eigenes Programm installieren. Warum nicht stattdessen ein bestehendes verwenden? Beachten Sie, dass Sie WinSCP nicht installieren müssen. Sie können das Paket [Portable Executables] (https://winscp.net/eng/docs/portable) herunterladen und einfach die Datei 'winscp.exe' extrahieren. –

+0

Vielen Dank für Ihre Antwort, aber ich brauche es so einfach wie möglich, die Installation einer Anwendung auf 100 Servern, macht mein Leben härter ... Entschuldigung, aber ich muss fragen, WinSCP ist wirklich Ihre Schöpfung? –