Próbowałem użyć protokołu FTP w trybie pasywnym:
Ruby FTP tryb pasywny błąd
require 'net/ftp'
ftp = Net::FTP.new
ftp.passive = true
ftp.connect('mydomain.com')
ftp.login
filenames = ftp.nlst
Ale mam błąd:
Errno::ETIMEDOUT: Connection timed out - connect(2)
Choć z aktywnego trybu działa dobrze!
Używam ruby 1.9.3. Kiedy ustawić debuge Tryb:
ftp.debug_mode = true
widzę:
**ftp.connect('mydomain.com')**
connect: mydomain.com, 21
get: 220---------- Welcome to Pure-FTPd [privsep] ----------
get: 220-You are user number 3 of 50 allowed.
get: 220-Local time is now 11:43. Server port: 21.
get: 220-IPv6 connections are also welcome on this server.
get: 220 You will be disconnected after 15 minutes of inactivity.
=> nil
irb(main):103:0> ftp.login
put: USER anonymous
get: 230 Anonymous user logged in
put: TYPE I
get: 200 TYPE is now 8-bit binary
=> true
irb(main):104:0> filenames = ftp.nlst
put: TYPE A
get: 200 TYPE is now ASCII
put: PASV
get: 227 Entering Passive Mode (1,27,13,19,17,15)
put: TYPE I
get: 200 TYPE is now 8-bit binary
Errno::ETIMEDOUT: Connection timed out - connect(2)
Również odkryli, że w zależności od Net::FTP
transfercmd
hosta jest używana, różni się od mojego adresu IP domeny! Może to prywatny adres IP? Co jest nie tak?
Czy jesteś pewien, że twój serwer pozwala na tryb pasywny? Wygląda na to, że porty są zamknięte. –
Czy sprawdziłeś, czy twój serwer zapewnia możliwość podłączenia trybu pasywnego? – xyz
Tak, mój serwer zapewnia możliwość podłączenia trybu pasywnego. Sprawdziłem przy użyciu klienta FTP. – Vasilina