IOError:[Errno 2]在Python中使用Paramiko通过SSH上传文件时没有这样的文件

时间:2018-01-21 22:11:23

标签: python-2.7 paramiko

几年前有人问过这个问题,但看起来好像它来回了一段时间没有明确答案。这个问题在此供参考: IOError: [Errno 2] No such file - Paramiko put()

基本上,我正在尝试运行Python脚本(使用Paramiko)以通过SSH上传文件。我尝试了几种不同的方法,包括将URL更改为我的本地文件,以便它是一个绝对路径而不是相对路径,但我总是得到一个" IOERROR:[Errno2]没有这样的文件错误,不管我是什么做。这是我的代码:

import os
import paramiko

server = "sample_server.net"
ssh = paramiko.SSHClient()
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", 
"known_hosts")))
ssh.connect(server, username="cb", password="pass")
sftp = ssh.open_sftp()
sftp.put("test_upload.xml", "/home/sample/root/cb")
sftp.close()
ssh.close()

有没有人遇到过这个问题,或者对这个问题有什么了解?我绝对相信文件会退出,所以我不确定为什么它无法找到。谢谢。

1 个答案:

答案 0 :(得分:0)

尝试在remotepath参数中添加文件名。从用于放置的API文档中:

远程路径(str) – SFTP服务器上的目标路径。请注意,应包含文件名。仅指定目录可能会导致错误。”

http://docs.paramiko.org/en/2.4/api/sftp.html#paramiko.sftp_client.SFTPClient

import os
import paramiko

server = "sample_server.net"
ssh = paramiko.SSHClient()
ssh.load_host_keys(os.path.expanduser(os.path.join("~", ".ssh", "known_hosts")))
ssh.connect(server, username="cb", password="pass")
sftp = ssh.open_sftp()
sftp.put("test_upload.xml", "/home/sample/root/cb/test_upload.xml")
sftp.close()
ssh.close()

这样做对我有用。