使用put命令时出现Paramiko错误

3

您好,我正在使用 paramiko 1.7.6 "fanny" 在 Microsoft Windows XP v2002 Service Pack3 上的 Python 2.4.2 版本。以下是我的脚本:

import paramiko

hostname='blah' 
port=22
username='blah'
password='blah'
fullpath='\\\\root\\path\\file.xls'
remotepath='/inbox/file.xls'

self.client= paramiko.SSHClient()
self.client.load_system_host_keys()
self.client.connect(hostname,port,username,password)
sftp = self.client.open_sftp()
sftp.put(fullpath,remotepath)

我收到的错误信息是:

sftp.put(fullpath,remotepath))

File "build\bdist.win32\egg\paramiko\sftp_client.py", line 577, in put
File "build\bdist.win32\egg\paramiko\sftp_client.py", line 337, in stat
File "build\bdist.win32\egg\paramiko\sftp_client.py", line 628, in _request
File "build\bdist.win32\egg\paramiko\sftp_client.py", line 675, in _read_response
File "build\bdist.win32\egg\paramiko\sftp_client.py", line 701, in _convert_status
IOError: [Errno 2] /inbox/file.xls is not a valid file path

但路径确实存在(我可以使用sftp.chdir('inbox')进入),我还尝试过进入该文件夹并使用put,但是我得到了相同的错误(已删除inbox前缀)。

有人遇到过这个问题吗?

谢谢,马特


1
你尝试过使用反斜杠代替吗:remotepath='\inbox\file.xls' - mouad
你说'/inbox'失败了,但手动测试'inbox'可以工作 - 你确定需要第一个斜杠吗?也就是说,inbox是根目录吗? - Hugh Bothwell
2个回答

1

IOError: [Errno 2] /inbox/file.xls 不是一个有效的文件路径

这是您的错误,意味着/inbox不是一个有效的路径。您可能想使用

remotepath='inbox/file.xls'


1

我遇到了相同的问题。

签名指定sftp_client.py def put(self, localpath, remotepath, callback=None, confirm=True):

大多数论坛回答都将第一个参数称为远程路径。

如果我们将第一个参数更改为本地路径,第二个参数更改为远程路径, 它可以正常工作。

这没有任何问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接