FTP “PUT” falha da Máquina Virtual, mas não do PC host: 504 Comando não implementado para esse parâmetro

1

Eu tenho um script FTP que estou usando para automatizar a transferência de arquivos. A transferência funciona bem no meu PC (XP SP2), mas quando eu tento executá-lo em uma VM no meu PC (XP SP2), os comandos "put" emitem:

504 Command not implemented for that parameter.

Arquivo FTP:

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

O site / servidor FTP está em todo o mundo e não está sob meu controle.

Pelo que entendi de um 504, isso significa que o comando NUNCA deve funcionar, mas como o mesmo script funciona no meu PC (hospedando a VM), isso elimina a sintaxe, a nomeação de arquivos, etc.

O comando put, quando acionado a partir da VM, na verdade cria um arquivo de tamanho 0 no servidor FTP de destino, mas não preenche o arquivo.

    
por BrianH 22.07.2009 / 00:14

3 respostas

2

Parece-me que está ligado a um problema de rede.

O firewall do seu PC host não deve ser aberto para o tráfego do software da VM. Olha para mim como todos os comandos FTP são permitidos (porta 20), mas quando você inicia uma transferência de dados real, ela não pode abrir o canal de dados (na porta 21).

Você tem o mesmo erro com outros comandos que transferem dados? Como "LIST" por exemplo.

Tente o modo passivo (comando "PASV"), pois não abrirá um canal diferente para os dados.

    
por 15.10.2009 / 07:55
0

A máquina que hospeda a VM é diferente da própria VM.
Se o comando funciona no SO base da máquina, esse servidor FTP está permitindo isso.
Quando o comando não funciona no sistema operacional da VM, esse servidor FTP (outro diferente) não permite isso.

Estou faltando alguma outra coisa nesta questão?
Ok, você está dizendo que o servidor FTP é o mesmo e que você não é capaz de FTP-PUT de um cliente VM onde, como funciona a partir do seu cliente ftp OS base?

Se for esse o caso, pode valer a pena fazer uma captura de pacotes das duas sessões FTP.
Se a sessão com falha estiver operando de maneira diferente, essa parte pode não ser suportada pelo seu servidor FTP. Verifique as diferenças do modo ativo / passivo FTP por exemplo (pode não ser o seu problema, mas algo assim).

Você pode capturar com Wireshark ou tcpdump filtrados para a porta TCP do servidor.

Atualizar com base no seu comentário.
Eu ainda diria que você deveria fazer uma captura para ver o que está falhando.
No entanto, há outra coisa que você pode fazer, ftp -v dará todas as comunicações de controle conforme elas acontecem. Você poderia usar isso para ver como os dois clientes FTP se comportam de maneira diferente para identificar o problema. Opa , essa não é a opção correta ... houve algo que rastreou a troca de comandos, não é possível obtê-la agora. Talvez alguém aqui se lembre.

    
por 22.07.2009 / 06:43
0

Da minha pesquisa, o 504 pode ter outros significados além de Command not implemented for that parameter . Também pode ser:

504: tempo esgotado à espera de gateway
504: mecanismo de segurança desconhecido

Espero que ajude. O primeiro é especialmente sugestivo.

Perguntas:
O que acontece quando você entra no posto à mão?
Você já tentou usar um sniffer de protocolo para encontrar a diferença exata entre a comunicação do PC e a VM?

EDITAR

É possível que o servidor FTP remoto tenha algum mecanismo de segurança que permita seu computador, mas não a VM?

    
por 15.10.2009 / 07:42