вот три очень простых команды оболочки:
wget 'ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Dataset_Documentation/NHIS/2016/samadult_layout.pdf'
и
wget 'ftp://ftp.ibge.gov.br/Censos/Censo_Demografico_2010/Resultados_Gerais_da_Amostra/Microdados/1_Atualizacoes_20160311.txt'
и
wget ftp://ftp.cs.ru.nl/pub/robots.txt
которые пытаются получить данные с государственных ftp-сайтов. они добираются до PASV
потом повесьте. скриншоты ниже .. мне нужно изменить какие-то настройки или что-то в этом роде? Спасибо!
и
Похоже, Google Cloud Shell разрешает только исходящие порты 80 (HTTP), 443 (HTTPS), 8080 (иногда используется для HTTP-прокси), 22 (SSH) и 21 год (Канал управления FTP). Возможно, некоторые другие порты тоже, но определенно это не неограниченный открытый исходящий доступ.
К сожалению, этого недостаточно для успешного FTP-соединения - FTP передает данные по отдельному TCP-соединению, инициированному клиентом (пассивный режим) или сервером (активный режим). Ни один из этих двух методов, похоже, не работает.
Один из способов обойти это - загрузить файлы через HTTP или HTTPS. Если, конечно, они доступны по этим протоколам. Например, файл в вашем последнем примере можно получить как https://ftp.cs.ru.nl/robots.txt из Google Cloud Shell.
Другой способ - настроить прокси HTTP / FTP на порт 8080, например при установке небольшого вычислительного экземпляра squid
пакет и используйте этот прокси для загрузки файлов. Что-то вроде этого:
export ftp_proxy=http://your-instance:8080/
wget ftp://ftp.cs.ru.nl/pub/robots.txt
Третий вариант - это, очевидно, загрузить файлы FTP на локальный компьютер и сделать их доступными через службу хранения файлов по HTTPS.
К сожалению, похоже, что FTP не будет работать из облачной оболочки ни в активном, ни в пассивном режиме. Вам придется обойти это одним из способов, описанных выше.
Удачи с этим :)
Из-за плохой природы протокола FTP и того, как он нарушает TCP: http://slacksite.com/other/ftp.html
попробуйте добавить --no-passive-ftp
опция wget, если серверы настроены на работу с активным FTP - это может помочь.
Я подозреваю, что некоторые из этих серверов не настроены для приема пассивного FTP или маршрутизаторов между отслеживанием TCP-соединений, но не идентифицируют и не отслеживают FTP-соединения должным образом. Фактически, я смог использовать для них пассивный ftp со своего сайта, так что проблема где-то между GC и этими сайтами.
Собственно, это работает.
Вышеупомянутое взято из законного экземпляра GC, в данном случае неограниченного бесплатного использования Google для каждой учетной записи Google.
Сначала я подумал, может быть, вы редактировали настройки сети. Вероятно, нет.
И тогда я понял ... подождите, если вы этого не сделали, ваш экземпляр, вероятно, все еще находится на динамическом IP, что может быть причиной! Имеет смысл, что если ваш IP-адрес динамический, Google может немного CGNAT в теме. Хотя не уверен.
Мой экземпляр, конечно, находится на статическом IP, которые бесплатны. Войти в Сеть VPC, создайте новый IP-адрес, вернитесь к экземплярам, щелкните экземпляр (вам нужно будет остановить его) и в разделе Сетевые интерфейсы настроить новый IP. То есть IIRC, что я сделал.
ПРЕДУПРЕЖДЕНИЕ. Google взимает 10 центов за час за неиспользованные статические IP-адреса. Вам нужно сразу связать его с экземпляром.
Информация об IP-адресе: https://cloud.google.com/compute/docs/ip-addresses/
Информация о ценах: https://cloud.google.com/compute/pricing