当前位置:  开发笔记 > 编程语言 > 正文

使用python ftplib违反协议发生了EOF

如何解决《使用pythonftplib违反协议发生了EOF》经验,为你挑选了0个好方法。

我正在使用python ftplib进行隐式tls连接程序.我尝试了有问题的解决方案python-ftp-implicit-tls-connection-issue(包括Rg Glpj和Juan Moreno的答案)来建立连接.但是当我打电话retrlineretrbinary登录到这样的ftp服务器后(FTP_ITLS是子类FTP_TLS):

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 
    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在Python 2.7中用作默认协议,我尝试了PROTOCOL_TLSv1,PROTOCOL_TLSv1_1和PROTOCOL_TLSv1_2,但它们都没有工作.我也尝试重写ntransfercmdauth,或设置ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)为斯特芬·乌尔里希在提问时说连接到FTP-TLS-1-2-服务器与-FTPLIB,但误差不会消失.那我该怎么办?谢谢.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有