2013-03-27 5 views
5

मैं निष्क्रिय मोड के साथ FTP का उपयोग करने की कोशिश की:
माणिक एफ़टीपी निष्क्रिय मोड त्रुटि

require 'net/ftp' 
ftp = Net::FTP.new 
ftp.passive = true 
ftp.connect('mydomain.com') 
ftp.login 
filenames = ftp.nlst 

लेकिन मिल गया है त्रुटि:

Errno::ETIMEDOUT: Connection timed out - connect(2) 

हालांकि सक्रिय मोड के साथ यह काम करता है ठीक!

मैं रूबी 1.9.3 का उपयोग करता हूं।

ftp.debug_mode = true 

मैं देख रहा हूँ:: जब मैं debuge मोड सेट

**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) 

इसके अलावा, मैं बाहर समारोह transfercmd में Net::FTP मेजबान से प्रयोग किया जाता है पाया है, कि, मेरे डोमेन आईपी पते से अलग! शायद यह एक निजी आईपी पता है? यहाँ क्या गलत है?

+0

क्या आप सुनिश्चित हैं कि आपका सर्वर निष्क्रिय मोड की अनुमति देता है? ऐसा लगता है कि बंदरगाह बंद हैं –

+0

क्या आपने मौसम जांच लिया है कि आपका सर्वर निष्क्रिय मोड को जोड़ने की क्षमता प्रदान करता है? – xyz

+0

हां, मेरा सर्वर निष्क्रिय मोड को जोड़ने की क्षमता प्रदान करता है। मैंने एफ़टीपी क्लाइंट का उपयोग करके जांच की है। – Vasilina

उत्तर

4

मैंने makepasvNet::FTP से विधि को अधिलेखित किया है और यह काम करता है!

module Net 
    class FTP 
    def makepasv # :nodoc: 
     if @sock.peeraddr[0] == "AF_INET" 
     #host, port = parse227(sendcmd("PASV")) #WAS! 
     host, port = parse229(sendcmd("EPSV")) 
     else 
     host, port = parse229(sendcmd("EPSV")) 
     end 
     return host, port 
    end 
    end 
end 
+1

अच्छा काम, जिसने चाल की, वहां कहीं पैच ठीक है! –

संबंधित मुद्दे