web-dev-qa-db-ja.com

FTP "PUT"は仮想マシンから失敗しますが、ホストPC:504コマンドはそのパラメータに実装されていません。

ファイル転送を自動化するために使用しているFTPスクリプトがあります。転送は私のPC(XP SP2)でうまく機能しますが、VMマイPC(XP SP2)で実行して実行すると、 "put"コマンドがoffになります。

504 Command not implemented for that parameter.
 _

FTPファイル:

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

FTPサイト/サーバーは世界中にあり、私のコントロールの下ではありません。

504の理解しているものから、それはコマンドがうまく機能しないはずですが、同じスクリプトが私のPC(VMをホストしている)で動作しているため、構文、ファイルの命名などを排除します。

PUTコマンドVMからトリガーされたときは、実際にはターゲットFTPサーバーに0の長さのファイルを作成しますが、ファイルには入力されません。

1
BrianH

それは実際にネットワーキングの問題にリンクされているように私を見ます。

ホストPC上のファイアウォールは、VMソフトウェア)からのトラフィックを開くべきではありません。すべてのFTPコマンドが許可されている(ポート20)が、実際のデータ転送を開始すると、データチャネルを開くことができません(ポート21上)。

データを転送する他のコマンドと同じエラーがありますか?例えば「リスト」と同様です。

データに別のチャンネルを開くことができないので、パッシブモード(コマンド "PASV")を試してください。

2
Snark

VMをホストしているマシンはVM自体とは異なります。
[。]コマンドがマシンのベースOSで機能すると、そのFTPサーバーがそれを許可しています。
[。] VM OSでコマンドが機能しない場合、そのFTPサーバ(別のもの)がそれを許可していない。

私はこの質問に何か他のものを見逃していますか?
[。] OK、あなたはFTPサーバーが同じものであると言っていますか
[。]あなたはあなたの基本OS FTPクライアントから機能するように、VMクライアントからFTPを入れることができませんか?

そうである場合は、2つのFTPセッションのパケットキャプチャを受けることが価値があるかもしれません。
[。]失敗したセッションが異なる場合、その部分はFTPサーバーではサポートされていない可能性があります。
[。] FTPアクティブ/パッシブモードの違いを確認します(問題にならない場合がありますが、このようなもの)。

WiresharkまたはTCPDUMPをサーバーTCP-Port用にフィルタリングしたところでキャプチャを取ることができます。


更新あなたのコメントに基づいて。
[。ね。]私はまだあなたが失敗しているのかを見るために捕獲をするべきです。
[。]しかし、あなたができることはもう一つのことがあります、ftp -v彼らが起こるようにすべての制御通信を与えます。問題を特定するために、2つのFTPクライアントがどのように振る舞うかを確認するためにそれを使用できます。 おっと、それは正しいオプションではありません...コマンド交換をトレースしたものがありました。多分、誰かがここに覚えています。

0
nik