我正在做一个项目,该项目要求我们通过 SFTP 将恶意文件上传到远程服务器,但我们在执行此操作时遇到了麻烦。我们尝试遵循此 youtube guide ,但我们遇到了一些问题。
当我们运行脚本时出现“没有这样的文件”错误,我们确定该文件存在并且我们已经为 python 脚本提供了文件的正确名称和位置。
这是我们现在拥有的脚本:
import pysftp as sftp
def sftpTry():
try:
s = sftp.Connection(host='babbage.cs.missouri.edu', username ='<username>', password = '<password>')
remotepath = '~it3001s14grp1/videos/newVideo/new.avi'
#localpath = '/etc/motion/capture/hello.txt'
localpath = '/etc/motion/capture/06--2014-05-15---16-16-25.avi'
s.put(localpath, remotepath)
s.close()
except Exception, e:
print str(e)
sftpTry();
最佳答案
您应该以正斜杠“/”开始您的远程路径。另外,检查您在远程路径中指定的目录。当您登录到服务器时(比如使用 ssh),您应该尝试在目录中执行 pwd
。应该完全像那样指定远程路径。
虽然您在远程路径中确实有文件名,但如果您仅指定文件夹名称,则会引发错误。
另一个技巧是使用 getpass
而不是硬编码密码:
passwd = getpass.getpass()
s = sftp.Connection(host='<host>', username = '<username>', password = passwd)
关于将文件上传到远程服务器的Python脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684988/