2

我希望能够在 python 中使用 scp、ssh 或 sftp 从远程机器复制文件。我发现最好的方法是使用 ssh 和 sftp。我一直在尝试使用这个示例来完成我需要做的事情。

import paramiko
import os

paramiko.util.log_to_file('logfile.log')

host = "101.102.103.104"
port = 22
transport = paramiko.Transport((host, port))
password = "pass"
username = "user"

sftp = paramiko.SFTPClient.from_transport(transport)

filepath = '~/remote/file'
localpath = '~/local/file'
sftp.get(filepath, localpath)

sftp.close()
transport.close()

当我这样做时,我收到此错误:

Traceback (most recent call last):
  File "example.py", line 19, in <module>
    sftp.get(filepath, localpath)
AttributeError: 'NoneType' object has no attribute 'get'

有什么我遗漏或没有正确执行的吗?

谢谢

4

2 回答 2

1

您的用户名和密码已初始化但从未使用过。您需要为您的传输对象调用连接

password = "pass"
username = "user"
transport.connect(username = username, password = password)
于 2012-06-22T14:13:28.490 回答
0

API指定您必须提供“类似套接字的对象”才能提供paramiko.Transport()元组。我想这就是问题所在。

更新: 虽然在文档中另有说明,但元组是可以的。

于 2012-06-22T14:14:04.533 回答