FTP Ativo / Passivo não funciona como eu esperava

2

Então eu tenho uma questão interessante no momento. Eu estou tentando usar o curl (7.15.5 no CentOS) para recuperar um arquivo de um servidor FTP remoto. Nosso cliente mudou alguma coisa no último fim de semana, porque funcionou na sexta-feira e não agora.

Eu posso usar FTP no cliente CLI e obter uma lista de diretórios muito bem, embora eu precise emitir "passive" para desativar o modo passivo. Se eu não fizer isso, recebo

421 Service not available, remote server has closed connection
Passive mode refused.  Turning off passive mode.
No control connection for command: Transport endpoint is not connected
ftp> 

Tudo bem. Obviamente, o modo passivo precisa ser desativado. Eu li a página man algumas vezes e eu entendo que eu preciso usar -P para especificar o modo "ativo", no entanto, a partir da documentação parece que isso vai abrir uma porta na máquina cliente (minha) para os dados para transmitir para. Já que está atrás de um firewall, isso não funcionará.

Isso me diz que eu entendi mal alguma coisa, porque o cliente CLI trabalha no modo ativo.

Me ajude serverfault-kenobi, você é minha única esperança.

    
por Matt Simmons 02.06.2009 / 17:15

3 respostas

1

Eu entendi!

A chave é para usar -P , mas você tem que usar a opção "óbvia", já que você não pode abrir outra porta e conectá-la.

Para citar a documentação:

- faz o curl escolher o mesmo endereço IP que já é usado para a conexão de controle

Então o comando curl

curl -u username:password -P - -o output.file ftp://whatever/source.file

O -P - foi a parte importante. Essencialmente, ele faz com que o curl use a única conexão disponível (a conexão de comando) para transferir dados.

Hurray!

    
por 02.06.2009 / 17:29
1

Este link explica o Active vs o Passive muito bem.

    
por 02.06.2009 / 17:25
0

Para mim, para que funcione, também tive que adicionar --disable-eprt :

curl --disable-eprt -u username:password -P - ftp://whatever/source.file
    
por 22.10.2014 / 14:38