【发布时间】:2020-04-15 19:37:45
【问题描述】:
我想要做的是使用this 模块与 paramiko 进行 scp。我已成功 ssh,并使用 put() 方法将文件 发送到 远程位置。当我尝试使用 get() 方法从该位置 scp 文件 from 时,我的问题出现了。它给了我这个错误:
scp.SCPException: scp: user@flibbertygibbit.com:/home/username/myfile: No such file or directory
问题在于该路径确实存在。
以下是相关代码:
def download(file):
scp = SCPClient(ssh.get_transport())
scp.get('/home/{0}/{1}'.format(user.get(),file), 'C:\\Users\\Me\\Desktop')`
user.get() 引用包含我的用户名的 tkinter StringVar,file 是文件名。
Here 是整个代码,减去个人详细信息,以防万一。
ls -ld /home/username/myfile 的输出:
-rw-rw-r-- 1 username username 145 Dec 1 13:50 /home/username/job.alf
scp user@flibbertygibbit.com:/home/username/myfile .的输出:
C:\Users\Me>scp user@flibbertygibbit.com:/home/username/myfile .
Password:
myfile 100% 145 0.1KB/s 00:00
非常感谢任何可以帮助我弄清楚为什么会发生这种情况的人。
【问题讨论】:
-
有什么问题? 1)
/home/myfile是正确的现有路径,而 SCP 在不应该发生的情况下失败。 2)或者'/home/{0}/{1}'.format(user.get(),file)应该产生不同的路径(不是/home/myfile)? -
问题是 /home/myfile 是正确的路径,它存在于远程服务器上,但是 scp 操作错误。它肯定是通过了正确的路径,只是由于某种原因无法正常工作。
-
嗯,对我来说,
'/home/{0}/{1}'.format(user.get(),file)看起来像是获得类似/home/username/myfile的路径的一种方式(对我来说实际上看起来是正确的路径,而不仅仅是/home/myfile)。 -
好的,完成更多测试。该错误现在将它认为不存在的路径输出为
/home/username/myfile并且仍然错误。我已经三重检查了,而且绝对可以 100% 确定,得到了一条非常真实的路径。 -
1)
.put成功使用了哪些路径? 2) 下载是否与命令行scp客户端一起使用? 3)当你SSH到服务器时,pwd命令输出什么?ls -ld /home/username/myfile输出什么?