2012-12-06 14 views
14

Se eseguo questo a livello locale, tutto funziona bene:Cercando di scaricare il file dai risultati FTP in un errore "500 Illegal comando PORT"

require 'net/ftp' 

ftp=Net::FTP.new("myftpserver.com", "username", "password") 

ftp.getbinaryfile("/myfile.zip","localfile.zip") 
ftp.close 

Se tento di eseguirlo sul server Linux che sto usando, il risultato è:

/usr/local/lib/ruby/1.9.1/net/ftp.rb:273:in `getresp': 500 Illegal 
PORT command. (Net::FTPPermError) from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:281:in `voidresp' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:304:in `block in voidcmd' from 
/usr/local/lib/ruby/1.9.1/monitor.rb:201:in `mon_synchronize' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:302:in `voidcmd' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:317:in `sendport' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:325:in `makeport' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:358:in `transfercmd' from 
/usr/local/lib/ruby/1.9.1/net/ftp.rb:420:in `block (2 levels) in 
retrbinary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:166:in 
`with_binary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:419:in `block 
in retrbinary' from /usr/local/lib/ruby/1.9.1/monitor.rb:201:in 
`mon_synchronize' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:418:in 
`retrbinary' from /usr/local/lib/ruby/1.9.1/net/ftp.rb:539:in 
`getbinaryfile' 

Quale potrebbe essere il problema?

+1

potrebbe essere spostato sul server default .. –

risposta

34

ho trovato la risposta a http://www.ruby-forum.com/topic/161274:

Al di là di firewall, ftp attivo non funziona dietro un dispositivo NAT. Ftp server volte dicono comando di porta illegale se dite loro che il tuo indirizzo è un indirizzo IP privato come 192.168.x (l'indirizzo sulla rete dietro il dispositivo NAT)

Aggiunta:

ftp.passive = true 

risolto.

+1

+1 ... Viene visualizzato lo stesso errore in Netbeans Remote Editor, risolto passando alla modalità passiva. –

+0

ho usato questa gemma "paperclip-storage-ftp" e sto ricevendo un errore come Net :: FTPPermError 500 durante il caricamento della foto. così puoi dirmi dove dovrei mettere questa riga ftp.passive = true nel modello ?? puoi vedere anche questo http://stackoverflow.com/questions/33540851/getting-random-error-while-upload-photo-with-paperclip-on-my-ftp-server –