首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pysftp的sftp问题

使用pysftp的sftp问题
EN

Stack Overflow用户
提问于 2017-01-11 19:05:50
回答 1查看 1.3K关注 0票数 0

我正在尝试使用pysftp从本地机器发送一个文件到服务器。

当我使用命令行登录到服务器时:

代码语言:javascript
复制
sftp -o port=111 user_name@host

然后执行pwd,我得到/作为当前位置

因此,我想在pysftp中做同样的事情:

代码语言:javascript
复制
import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

with pysftp.Connection("host", username="user_name", password="password", port=111, cnopts=cnopts) as sftp:
    print(sftp.pwd)
    sftp.put(local_file, sftp.pwd)

但是我得到了错误IOError: [Errno 13] Permission denied

不过,我可以在命令行和ftp客户机(如FileZilla )中使用相同的凭据进行sftp操作。

在这里,完整的错误跟踪:

代码语言:javascript
复制
traceback (most recent call last):
  File "C:/workspace/segments-upload/media_math_segments_upload.py", line 232, in <module>
    sys.exit(0 if main() else 1)
  File "C:/workspace/segments-upload/media_math_segments_upload.py", line 226, in main
    process(s3_bucket, s3_dir, sftp_host, sftp_path, sftp_user_name, sftp_password, sftp_port)
  File "C:/workspace/segments-upload/media_math_segments_upload.py", line 182, in process
    sftp_file(local_file, sftp_host, sftp_path, sftp_user_name, sftp_password, sftp_port)
  File "C:/workspace/segments-upload/media_math_segments_upload.py", line 105, in sftp_file
    sftp.put(local_file, sftp.pwd)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\pysftp\__init__.py", line 364, in put
    confirm=confirm)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 676, in put
    return self.putfo(fl, remotepath, file_size, callback, confirm)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 634, in putfo
    with self.file(remotepath, 'wb') as fr:
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 327, in open
    t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 730, in _request
    return self._read_response(num)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 781, in _read_response
    self._convert_status(msg)
  File "C:\Users\tkaghdo\AppData\Local\Continuum\Anaconda2\lib\site-packages\paramiko\sftp_client.py", line 809, in _convert_status
    raise IOError(errno.EACCES, text)
IOError: [Errno 13] Permission denied
EN

回答 1

Stack Overflow用户

发布于 2017-01-11 22:31:02

通过在远程服务器上提供文件名解决了该问题。所以我就改变了

代码语言:javascript
复制
sftp.put(local_file, sftp.pwd)

代码语言:javascript
复制
sftp.put(local_file, "file_name.dat")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41598776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档