Мне нужно подключиться к серверу FTPS, с которым я могу успешно подключиться с помощью lftp. Однако, когда я пытаюсь использовать Python ftplib.FTP_TLS, время истекает, трассировка стека показывает, что он ожидает, что сервер отправит приветственное сообщение или подобное. Кто-нибудь знает, в чем проблема и как ее преодолеть? Интересно, нужно ли что-то делать на стороне сервера, но почему клиент lftp работает нормально. Любая помощь приветствуется.
Вот трассировка стека:
ftp = ftplib.FTP_TLS()
ftp.connect(cfg.HOST, cfg.PORT, timeout=60)
File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 135, in connect
self.welcome = self.getresp()
File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 210, in getresp
resp = self.getmultiline()
File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 196, in getmultiline
line = self.getline()
File "C:\Users\username\Softwares\Python27\lib\ftplib.py", line 183, in getline
line = self.file.readline()
File "C:\Users\username\Softwares\Python27\lib\socket.py", line 447, in readline
data = self._sock.recv(self._rbufsize)
socket.timeout: timed out
Успешный вход с использованием lftp на тот же ftps-сервер:
$ lftp
lftp :~> open ftps://ip_address:990
lftp ip_address:~> set ftps:initial-prot P
lftp ip_address:~> login ftps_user_id ftps_user_passwd
lftp [email protected]_address:~> ls
ls: Fatal error: SSL_connect: self signed certificate
lftp [email protected]_address:~> set ssl:verif-certificate off
lftp [email protected]_address:~> ls
lftp [email protected]_address:/>
Кстати, я использую Python 2.7.3. Я довольно много искал с помощью Google, но ничего не нашел.
У меня все еще есть эта проблема, оцените, может ли кто-то помочь. При пристальном рассмотрении FTP.connect() подключение к серверу не является проблемой, но получение подтверждения (или приветственное сообщение) с сервера является проблемой. У lftp нет этой проблемы, и у FileZilla нет никаких проблем, как в журнале здесь -
Status: Connecting to xx.xx.xx.xxx:990...
Status: Connection established, initializing TLS...
Status: Verifying certificate...
Status: TLS/SSL connection established, waiting for welcome message...
Response: 220- Vous allez vous connecter sur un serveur prive
Response: 220- Seules les personnes habilitees y sont autorisees
Response: 220 Les contrevenants s'exposent aux poursuites prevues par la loi.
Command: USER xxxxxxxxxxxxx
Response: 331 Password required for xxxxxxxxxxxxx.
Command: PASS **********
Response: 230 Login OK. Proceed.
Command: PBSZ 0
Response: 200 PBSZ Command OK. Protection buffer size set to 0.
Command: PROT P
Response: 200 PROT Command OK. Using Private data connection
Status: Connected
Status: Retrieving directory listing...
Command: PWD
Response: 257 "/" is current folder.
Command: TYPE I
Response: 200 Type set to I.
Command: PASV
Response: 227 Entering Passive Mode (81,93,20,199,4,206).
Command: MLSD
Response: 150 Opening BINARY mode data connection for MLSD /.
Response: 226 Transfer complete. 0 bytes transferred. 0 bps.
Status: Directory listing successful