2013-05-07 111 views
1

我已經使用ftplib創建了一個FTP客戶端。我在其中一臺Ubuntu虛擬機和另一臺客戶機上運行服務器。我想用ftplib連接到服務器,我按照以下方式進行:無法使用ftplib的IP地址(Python)

host = "IP address of the server" 
port = "Port number of the server" 

ftpc = FTP() 
ftpc.connect(host, port) 

我收到以下錯誤!

Traceback (most recent call last): 
    File "./client.py", line 54, in <module> 
    ftpc.connect(host, port) 
    File "/usr/lib/python2.7/ftplib.py", line 132, in connect 
    self.sock = socket.create_connection((self.host, self.port), self.timeout) 
    File "/usr/lib/python2.7/socket.py", line 571, in create_connection 
    raise err 
socket.error: [Errno 111] Connection refused 

當我瀏覽python的文檔時,我可以看到ftplib僅用於域名,如FTP(「域名」)。我可以使用IP地址而不是域名嗎?就我而言,我無法理解錯誤。如果有人能幫助我,這將是非常棒的。

另外,如果我在我的服務器上使用端口21,我得到套接字錯誤:連接被拒絕。我如何使用端口21作爲我的FTP服務器?

謝謝。

+2

連接拒絕意味着您的代碼實際上已到達遠程地址,但該計算機不運行ftp服務器,或者端口的防火牆已被屏蔽。使用dns名稱並不意味着什麼 - 它只是一個抽象層。無論如何,所有東西都在IP下運行。 – 2013-05-07 20:58:00

+0

謝謝你的回覆。我如何檢查港口的防火牆?在承載FTP服務器的服務器上運行 – harnex 2013-05-07 21:07:08

+1

,將'iptables --list'作爲'root'或'sudo iptables --list'運行。 – pcurry 2013-05-07 21:10:18

回答

1

看起來好像你正在嘗試使用ftplib連接到SFTP服務器,這會給你連接拒絕錯誤。嘗試使用pysftp而不是ftplib並查看它是否有效。

在虛擬機上,通過在控制檯上鍵入ftp和sftp命令進行測試。您將會知道機器運行在哪臺服務器上,即ftp或sftp。

+0

是的!這解決了我的問題,謝謝! – ratskin 2017-10-04 12:08:13