Como usar o modo FTP passivo no prompt de comando do Windows?

No Ubuntu ftp -p para o modo passivo funciona bem.

Como faço o mesmo no Windows?

Eu tentei com quote pasv mas estou ficando seguinte erro:

 230 OK. Current restricted directory is / ftp> quote pasv 227 Entering Passive Mode (31,170,167,221,116,239) ftp> cd os 250 OK. Current directory is /os ftp> dir 500 I won't open a connection to 10.23.16.248 (only to 113.193.128.177) 425 No data connection ftp> 

Meu firewall está desativado.

O Windows não suporta realmente o modo passivo.

Você pode enviar o comando para o servidor de três maneiras diferentes, mas isso não ativará o modo passivo na extremidade do cliente Windows.

Esses argumentos são para enviar vários comandos e pasv não é algo em que a Microsoft pensou quando a escreveu.

Você terá que encontrar um software de terceiros, como o WinSCP, que suporte o uso da linha de comando e usar isso em vez do Windows nativo.

O cliente de linha de comando de FTP do Windows ( ftp.exe ) não suporta o modo passivo, em qualquer versão do Windows. Isso faz com que seja inútil hoje em dia devido a firewalls e NAT onipresentes.

Usando a quote pasv não vai ajudar. Ele alterna apenas o servidor para o modo passivo, mas não para o cliente .


Use qualquer outro cliente de linha de comando FTP do Windows. Maioria do outro modo passivo de suporte.

Por exemplo, o WinSCP usa como padrão o modo passivo e há um guia disponível para converter o script FTP do Windows para o script WinSCP .

(Eu sou o autor do WinSCP)

Embora isso não responda a pergunta diretamente sobre a linha de comando, mas a partir do sistema operacional Windows, use o servidor ftp: // username @ do Windows Explorer

isso usará o modo passivo por padrão

Para linha de comando, o modo ativo é o padrão

O cliente CURL suporta o protocolo FTP e funciona para o modo passivo. Obter o download sem versão SSL e você não precisa de nenhuma biblioteca openssl.dll. Apenas um aplicativo de linha de comando curl.exe.
http://www.paehl.com/open_source/?CURL_7.35.0

 curl.exe -T c:\test\myfile.dat ftp://ftp.server.com/some/folder/myfile.dat --user myuser:mypwd 

Outro é o Putty psftp.exe, mas o prompt de verificação da chave do servidor requer um truque. Esta input de linha de comando NO para a chave de significado de prompt não é armazenada no registro apenas neste momento sendo usado. Você precisa de um arquivo de script externo, mas às vezes é bom se você copiar vários arquivos para cima e para baixo.
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

 echo n | psftp.exe ftp.server.com -l myuser -pw mypwd -b script.txt 

script.txt (qualquer comando ftp pode ser typescript)

 put "C:\test\myfile.dat" "/some/folder/myfile.dat" quit 

A quote PASV comando não é um comando para o programa ftp.exe , é um comando para o servidor FTP solicitando uma porta de alta ordem para transferência de dados. Uma transferência passiva é aquela em que os dados do FTP sobre essas portas de alta ordem enquanto o controle é mantido nas portas inferiores.

O programa windows ftp.exe pode ser usado para enviar os comandos do servidor FTP para fazer uma transferência de dados passiva entre dois servidores FTP. Uma instalação padrão do Windows não terá, e provavelmente não deverá, ter o serviço do servidor FTP sendo executado como um terminal para transferências passivas. Portanto, se forem necessárias transferências passivas com uma checkbox padrão do Windows, será necessária uma solução diferente de ftp.exe como FTPing para localhost, já que uma das conexões não funcionará na maioria dos ambientes Windows.

Você pode efetuar uma transferência FTP passiva entre dois hosts diferentes (mas não duas conexões no mesmo host) da seguinte maneira:

Abra dois prompts, use um para ftp.exe conectar-se ao seu servidor FTP de origem e um para ftp.exe conectar ao seu servidor FTP de destino.

Agora estabeleça uma conexão passiva entre os servidores usando os comandos brutos PASV e PORT. O comando quote PASV responderá com um IP / porta em reticências. Use esses dados para o comando quote PORT da quote PORT . Seu link passivo é agora estabelecido assumindo que os firewalls não bloquearam uma ou mais das quatro portas (2 para controle FTP, 2 para dados FTP)

Em seguida, inicie o recebimento de dados com o comando quote STOR da quote STOR para o servidor FTP de recebimento e, em seguida, envie a quote RETR comando de controle quote RETR para o servidor FTP de origem.

então para mim:

 client 1 > ftp.exe server1 ftp> quote PASV 227 Entering Passive Mode (10,0,3,1,54,161) client 2 > ftp.exe server2 ftp> quote PORT 10,0,3,1,54,54,161 ftp> quote STOR myFile client 1 ftp> quote RETR myFile 

Cavet: Estou conectando a alguns servidores FTP antigos YMMV

Esse é um problema comum . quando começamos a conexão ftp apenas o ip externo abre a porta para conexão pasv. mas o ip por trás do NAT não abre a conexão, então a conexão passiva falha com o comando PASV

precisamos especificar que, ao abrir a conexão tão aberta conexão com

ftp -p {host}

O FileZilla funciona bem. Eu uso FileZilla FTP Client “Transferência manual”, que suporta o modo passivo.

Exemplo: Abra o FileZilla e selecione “Transferir” >> “Transferência Manual” e, dentro da Janela de Transferência Manual, faça o seguinte:

1) Confirme se a opção apropriada Download / Upload está selecionada 2) Para Remoto: Digite o nome do diretório onde o arquivo para download está localizado 3) Para Remoto: Digite o nome do arquivo a ser baixado 4) Para Local: Navegue até o diretório desejado deseja baixar o arquivo para 5) Para Local: Digite um nome de arquivo para salvar o arquivo baixado Como (use o mesmo nome de arquivo a ser baixado, a menos que você queira alterá-lo) 6) Check-Box “Iniciar transferência imediatamente” e clique em “OK “7) Download deve começar momentaneamente 8) Nota: Se você esqueceu de Check-Box” Iniciar transferência imediatamente “… Não Problema: apenas Clique com o botão direito no arquivo a ser baixado (dentro da Fila de Processos) na parte inferior do painel da janela do FileZilla e selecione “Process Queue” 9) O processo de download deve começar momentaneamente 10) Concluído