por que wget timeout no PASV em sites ftp com o shell do google cloud?

3

aqui estão três comandos shell muito simples:

wget 'ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Dataset_Documentation/NHIS/2016/samadult_layout.pdf'

e

wget 'ftp://ftp.ibge.gov.br/Censos/Censo_Demografico_2010/Resultados_Gerais_da_Amostra/Microdados/1_Atualizacoes_20160311.txt'

e

wget ftp://ftp.cs.ru.nl/pub/robots.txt

essa tentativa de extrair dados de sites ftp do governo. eles chegam a PASV e depois desligam. screenshots abaixo .. eu preciso alterar alguma configuração ou algo assim? obrigado!

e

    
por Anthony Damico 05.05.2018 / 23:59

3 respostas

2

Parece que o Google Cloud Shell só permite portas de saída 80 (HTTP), 443 (HTTPS), 8080 (às vezes usadas para proxy HTTP ), 22 (SSH) e 21 (canal de controle FTP). Talvez alguns outros portos também, mas definitivamente não é acesso aberto aberto irrestrito.

Infelizmente, isso não é suficiente para uma conexão FTP bem-sucedida - o FTP transfere dados em uma conexão TCP separada, iniciada pelo cliente ( modo passivo ) ou pelo servidor ( modo ativo ). Nenhum desses dois métodos parece funcionar.

Uma maneira de contornar isso é fazer o download de seus arquivos via HTTP ou HTTPS. Se eles estiverem disponíveis nesses protocolos, é claro. Por exemplo, o arquivo em seu último exemplo pode ser recuperado como link do Google Cloud Shell.

Outra maneira é configurar um proxy HTTP / FTP na porta 8080, por ex. em uma pequena instância de computação, instale squid package e use esse proxy para baixar seus arquivos. Algo parecido com isto:

export ftp_proxy=http://your-instance:8080/
wget ftp://ftp.cs.ru.nl/pub/robots.txt

Terceira opção é obviamente baixar os arquivos FTP para sua máquina local e disponibilizá-los através de algum serviço de armazenamento de arquivos via HTTPS.

Infelizmente, parece que o FTP não funcionará no shell da nuvem, nem no modo ativo nem no modo passivo. Você terá que contornar isso de uma das maneiras acima.

Boa sorte com isso:)

    
por 08.05.2018 / 13:35
1

Devido à natureza incorreta do protocolo FTP e à quebra do TCP: link

tente adicionar a opção --no-passive-ftp ao wget, se os servidores estiverem configurados para trabalhar com FTP ativo - isso pode ajudar.

Eu suspeito que alguns desses servidores não estejam configurados para aceitar FTP passivo ou roteadores entre as conexões TCP da trilha, mas não identificam e rastreiam conexões FTP conforme necessário. Na verdade, eu era capaz de usar ftp passivo para isso no meu site, então - problema está entre o GC e esses sites em algum lugar.

    
por 08.05.2018 / 12:18
1

EDIT: Eu não vi o "Cloud Shell" no título da pergunta, e um teste rápido mostra que o Cloud Shell realmente não funciona. A resposta abaixo abrange as instâncias comuns, que não apresentam problemas.

Na verdade, funciona.

OtextoacimaédeumainstâncialegítimadoGC,nestecasoagratuitaeilimitadaoferecidapeloGoogleporcontadoGoogle.

Inicialmente,penseiemtalvezsevocêeditouasconfiguraçõesderede.Vocêprovavelmentenãotem.

Eentãoeupercebi...espere,sevocênãotiver,suainstânciaprovavelmenteaindaestáemumIPdinâmico,oquepodeseromotivo!Fazsentidoque,seoseuIPédinâmico,oGooglepodeestarfazendoumpoucode CGNAT . Incerto embora.

Minha instância é, obviamente, em um IP estático, que é gratuito. Vá para Rede VPC , faça um novo endereço IP, volte para Instâncias, clique na instância (você terá que Parar), e sob Interfaces de rede configure o novo IP. Isto é, IIRC, o que fiz.

AVISO. O Google cobra 10c / h por IPs estáticos não utilizados. Você deseja associá-lo à instância imediatamente.

Informação do endereço IP: link

Informações sobre preços: link

    
por 08.05.2018 / 15:18