FTP "PUT" schlägt von der virtuellen Maschine aus, aber nicht vom Host-PC aus: 504 Der Befehl ist für diesen Parameter nicht implementiert

4372
BrianH

Ich habe ein FTP-Skript, das ich zum Automatisieren einer Dateiübertragung verwende. Die Übertragung funktioniert gut auf meinem PC (XP SP2), aber wenn ich es auf einer VM auf meinem PC (XP SP2) ausführe, gibt der Befehl "put" Folgendes aus:

504 Command not implemented for that parameter. 

FTP-Datei:

open [ftp site] [username] [password] cd [directory on FTP server] binary hash put ..\[subfolder1]\[Subfolder2]\[subfolder3]\[filename] bye 

Der FTP-Server ist weltweit und nicht unter meiner Kontrolle.

Nach meinem Verständnis von 504 bedeutet dies, dass der Befehl NIEMALS funktionieren sollte. Da jedoch dasselbe Skript auf meinem PC (Hosting der VM) funktioniert, entfällt die Syntax, Dateinamen usw.

Wenn der Befehl put von der VM ausgelöst wird, erstellt er tatsächlich eine Datei mit der Länge 0 auf dem Ziel-FTP-Server, füllt die Datei jedoch nicht aus.

1
Vielleicht möchten Sie das auf http://serverfault.com übernehmen. squillman vor 14 Jahren 1
Ich kenne mich mit FTP-Scripting nicht aus, aber hätte das etwas mit Backslashes für den Pfad zu tun? jtbandes vor 14 Jahren 0
Wie ist die VM mit Ihrem Hostnetzwerk verbunden? Steht es hinter NAT? heavyd vor 14 Jahren 0
Es sind nicht die Backslashes, ich bin in das Quellverzeichnis umgezogen. FTP -v ergibt: Verbindung mit [FTP-Server-IP-Adresse] kann nicht hergestellt werden: 52933 - Unbekannter Fehler: 0. FTP -d ergibt: ---> PORT [durch Kommas getrennte virtuelle PC-IP-Adresse], 19,129 504 Der Befehl ist für diesen Parameter nicht implementiert . ---> STOR [Dateiname] 550 Verbindung mit [FTP-Server-IP-Adresse] kann nicht hergestellt werden: 52934 - Unbekannter Fehler: 0. Die VM verwendet Shared Networking (NAT), was meiner Meinung nach das Problem im Moment ist ... BrianH vor 14 Jahren 0
yikes ... Wagenrückläufe werden in Kommentaren notiert, sorry! BrianH vor 14 Jahren 0

3 Antworten auf die Frage

2
Snark

Es sieht für mich wirklich so aus, als wäre es mit einem Netzwerkproblem verbunden.

Sollte auf Ihrem Host-PC keine Firewall für den Datenverkehr mit der VM-Software geöffnet werden. Sieht aus, als wären alle FTP-Befehle zulässig (Port 20), aber wenn Sie eine tatsächliche Datenübertragung starten, kann der Datenkanal (an Port 21) nicht geöffnet werden.

Haben Sie den gleichen Fehler bei anderen Befehlen, die Daten übertragen? Wie zum Beispiel "LIST".

Versuchen Sie den passiven Modus (Befehl "PASV"), da dadurch kein anderer Kanal für Daten geöffnet wird.

0
nik

Der Computer, auf dem sich die VM befindet, unterscheidet sich von der VM selbst.
Wenn der Befehl auf dem Basisbetriebssystem des Computers ausgeführt wird, lässt dieser FTP-Server dies zu.
Wenn der Befehl auf dem VM-Betriebssystem nicht funktioniert, lässt der FTP-Server (ein anderer) dies nicht zu.

Fehlt mir noch etwas in dieser Frage?
Ok, sagen Sie, dass der FTP-Server derselbe ist und
Sie keinen FTP-PUT von einem VM-Client aus ausführen können, während er von Ihrem FTP-Client des Basisbetriebssystems aus funktioniert?

Wenn dies der Fall ist, lohnt es sich möglicherweise, eine Paketerfassung der beiden FTP-Sitzungen vorzunehmen.
Wenn die fehlgeschlagene Sitzung anders arbeitet, wird dieser Teil möglicherweise nicht von Ihrem FTP-Server unterstützt.
Überprüfen Sie beispielsweise die Unterschiede im FTP-Aktiv / Passiv-Modus (möglicherweise nicht Ihr Problem, aber etwas ähnliches).

Sie können Captures mit Wireshark oder mit tcpdump für den Server-TCP-Port filtern.


Update basierend auf Ihrem Kommentar.
Ich würde immer noch sagen, Sie sollten ein Capture machen, um zu sehen, was nicht funktioniert.
Es gibt jedoch noch etwas anderes, was Sie tun können. Sie erhalten ftp -valle Kontrollmeldungen, sobald sie stattfinden. Sie können dies verwenden, um zu sehen, wie sich die beiden FTP-Clients unterscheiden, um das Problem zu identifizieren. Hoppla, das ist nicht die richtige Option ... es war etwas, das den Befehl Austausch verfolgt, kann es nicht bekommen. Vielleicht erinnert sich jemand hier.

Ich habe gerade die Frage geklärt, tut mir leid für die Verwirrung. Die VM und der Host-PC sind beide WinXP SP2 und der Ziel-FTP-Server ist derselbe. BrianH vor 14 Jahren 0
0
harrymc

Aus meiner Forschung kann 504 andere Bedeutungen haben als Command not implemented for that parameter. Es kann auch sein:

504: Zeitüberschreitung beim Warten auf Gateway
504: unbekannter Sicherheitsmechanismus

Ich hoffe das hilft. Der erste ist besonders suggestiv.

Fragen:
Was passiert, wenn Sie den Put von Hand eingeben?
Haben Sie versucht, einen Protokoll-Sniffer zu verwenden, um den genauen Unterschied zwischen der Kommunikation zwischen PC und VM zu finden?

BEARBEITEN

Ist es möglich, dass der Remote-FTP-Server über einen Sicherheitsmechanismus verfügt, der es Ihrem Computer erlaubt, nicht jedoch der VM?