2013-11-22 2 views
1

Я пытаюсь установить соединение, установленное на FTP-сервер с SSL из Python (v3.3.0). Но я продолжаю получать тайм-аут. Я НЕ, используя порт 990 в качестве порта SSL (параноидальный). Будет ли это причиной этой проблемы? И если да, как я могу указать порт, который я использую?Python SSL Время подключения FTP

Вот мой сценарий:

from ftplib import FTP 
    from ftplib import FTP_TLS 

    ftps = FTP_TLS('ip address') 

    ftps.auth() 

    ftps.sendcmd('USER uname') 
    ftps.sendcmd('PASS password') 

    ftps.prot_p() 
    ftps.retrlines('LIST') 

    ftps.close() 

И вот результат:

Traceback (most recent call last): 
    File "Scrpit name removed for posting", line 12, in <module> 
    ftps.retrlines('LIST') 
    File "C:\Python33\lib\ftplib.py", line 767, in retrlines 
    conn = self.transfercmd(cmd) 
    File "C:\Python33\lib\ftplib.py", line 381, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "C:\Python33\lib\ftplib.py", line 742, in ntransfercmd 
    conn, size = FTP.ntransfercmd(self, cmd, rest) 
    File "C:\Python33\lib\ftplib.py", line 343, in ntransfercmd 
    source_address=self.source_address) 
    File "C:\Python33\lib\socket.py", line 424, in create_connection 
    raise err 
    File "C:\Python33\lib\socket.py", line 415, in create_connection 
    sock.connect(sa) 
TimeoutError: [WinError 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

любые советы будут оценены,

ответ

3

Посмотрев на ftplib source, это, кажется, не хотят использовать любой порт, но 21.

Я думаю, что вы должны быть в состоянии работать вокруг этого, что-то как

import ftplib 

ftplib.FTP.port = 995  # or whatever port you are using 
ftps = ftplib.FTP_TLS('hostname', 'user', 'pwd') 
ftps.retrlines('LIST') 
+0

подтвердил работать – reggie

+0

Спасибо - после поиска в Google для разрешения я наконец нашел этот ответ, который исправляет проблему. Я могу получить список каталогов сейчас! – InnerSphere

0

Установите порт через connect

import ftplib 

ftps = ftplib.FTP_TLS() 
ftps.connect ('hostname', 991) 
+0

Я использую стандартный порт 21 для FTP, но не стандартный 990 для SSL, так как бы установить порт SSL? –

+0

Насколько я могу судить, использование вышеописанного метода соединяется с назначенным портом. – KevinDTimm

+0

Чтобы изолировать проблему, я изменил порт SSL на значение по умолчанию 990, но у меня все еще есть проблема с таймаутом. Я проверил изменение порта, связанное вручную с помощью клиента Filezilla –

Смежные вопросы