使用ftplib登录而不是使用Paramiko登录吗?

时间:2018-06-28 09:51:39

标签: python ftp sftp paramiko ftplib

我正在尝试通过ftplib与主机连接,但每次主机都提示-

File "E:\NTUC\virtualenv\lib\ftplib.py", line 152, in connect
source_address=self.source_address)
File "E:\NTUC\virtualenv\lib\socket.py", line 724, in create_connection
raise err
File "E:\NTUC\virtualenv\lib\socket.py", line 713, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because 
the target machine actively refused it

但是如果我使用Paramiko,则使用相同的凭据,它可以成功连接我。

我的ftplib代码:

import ftplib
f = ftplib.FTP()
f.connect("HOST")
f.login("USER_NAME", "PASSWORD")
ls = []
f.retrlines('MLSD', ls.append)
for entry in ls:
    print(entry)

我的Paramiko代码:

import paramiko
transport = paramiko.Transport((HOST, PORT))
transport.connect(username=USER_NAME, password=PASSWORD)
sftp = paramiko.SFTPClient.from_transport(transport)

1 个答案:

答案 0 :(得分:0)

Paramiko是SSH / SFTP库。 ftplib是FTP库。这些协议完全不同。

可以与Paramiko连接的事实实际上意味着您绝对不能使用ftplib连接到同一主机+端口。而且,即使您尝试使用FTP端口(您尝试使用的端口),您也很有可能根本无法使用ftplib连接到主机,因为服务器通常提供FTP SFTP,但不能同时提供

无论如何,与SFTP(Paramiko)的成功连接完全不能说明FTP(ftplib)。