2015-12-07 5 views
5

के साथ प्रोटोकॉल के उल्लंघन में हुआ था, मैं अजगर टीटीएल कनेक्शन के साथ एक अंतर्निहित टीएलएस कनेक्शन प्रोग्राम पर काम कर रहा हूं। मैंने कनेक्शन बनाने के लिए python-ftp-implicit-tls-connection-issue (आरजी ग्लैज और जुआन मोरेनो के उत्तरों सहित) में दिए गए समाधान की कोशिश की।ईओएफ पाइथन ftplib

58 server = FTP_ITLS() 
59 server.connect(host="x.x.x.x", port=990) 
60 server.login(user="user", passwd="******") 
61 server.prot_p() 
62 
63 server.cwd("doc") 
64 print(server.retrlines('LIST')) 
65 # server.retrbinary('RETR contents.7z', open('contents.7z', 'wb').write) 
66 server.quit() 

मैं एक EOF त्रुटि मिली:

Traceback (most recent call last): 
    File "D:/Coding/test/itls.py", line 64, in <module> 
    print(server.retrlines('LIST')) 
    File "D:\Python\Python27\lib\ftplib.py", line 735, in retrlines 
    conn = self.transfercmd(cmd) 
    File "D:\Python\Python27\lib\ftplib.py", line 376, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "D:\Python\Python27\lib\ftplib.py", line 713, in ntransfercmd 
    server_hostname=self.host) 
    File "D:\Python\Python27\lib\ssl.py", line 352, in wrap_socket 
    _context=self) 
    File "D:\Python\Python27\lib\ssl.py", line 579, in __init__ 
    self.do_handshake() 
    File "D:\Python\Python27\lib\ssl.py", line 808, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:590) 

ऐसा लगता है के रूप में ftplib PROTOCOL_SSLv23 का उपयोग करता है लेकिन जब मैं इस तरह एफ़टीपी सर्वर में प्रवेश करने के बाद retrline या retrbinary फोन (FTP_ITLSFTP_TLS के उपवर्ग है) पायथन 2.7 में डिफ़ॉल्ट प्रोटोकॉल के रूप में, मैंने PROTOCOL_TLSv1, PROTOCOL_TLSv1_1 और PROTOCOL_TLSv1_2 की कोशिश की, लेकिन उनमें से कोई भी काम नहीं किया। और मैंने ntransfercmd और auth को ओवरराइड करने का प्रयास किया, या ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1) सेट किया क्योंकि स्टीफन उललिच ने connect-to-ftp-tls-1-2-server-with-ftplib पर सवाल उठाया, लेकिन त्रुटि कभी गायब नहीं हुई। तब मैं क्या कर सकता हूँ? धन्यवाद।

उत्तर

0

मैं फ़ाइलज़िला एफ़टीपी सर्वर से कनेक्ट करने की कोशिश में भाग गया। फाइलज़िला में "एटीपी ओवर टीएलएस सेटिंग्स" में एक सेटिंग है जिसे "प्रोटी पी का उपयोग करते समय डेटा कनेक्शन पर टीएलएस सत्र बहाली की आवश्यकता है" कहा जाता है। इस विकल्प को अक्षम करने से इस समस्या को ठीक किया गया है।

यदि आपके पास सर्वर पर नियंत्रण नहीं है, तो FTPES - Session Reuse Required देखें जो सत्र पुन: उपयोग को सक्षम करने के तरीके पर जाता है। ऐसा लगता है कि पाइथन 3.6+ की आवश्यकता है।

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