如何使用fabric在本地执行scp

时间:2017-03-20 00:47:14

标签: python fabric scp

我现在正在使用fabric将大型文件目录上传到~100个不同的服务器。这些服务器没有安装rsync,因此不可能。现在,我正在使用upload_project方法完成此操作,这在我拥有的测试服务器上运行良好,但我听说ftp(即使它的sftp)在某些服务器上是不允许的而且我可能还需要限制传输的带宽。为了避免这些问题,我试图使用scp,但是,我遇到了一些问题。我原本以为我可以通过rsync_project方法中的代码来执行local("scp -r %s %s" % (local_str, remote_str)之类的操作。但是,scp仍然需要密码。所以,我回应了env.password到scp,这是有效的,但后来我需要输入yes来接受密钥。我知道我可以回复密码并对任何关键提示回显“是”,但我想知道是否还有其他方法可以在没有所有提示的情况下完成此操作。另外,遗憾的是,服务器上的结构版本(我无法更新)有点落后(1.6ish)并且没有可以处理提示的context-lib功能。

1 个答案:

答案 0 :(得分:0)

  

我想知道是否有其他方法可以在没有所有提示的情况下完成此操作

答案与Fabric并不完全相关。对于parent命令,您应该查看StrictHostKeyChecking option,以跳过已知的主机密钥检查。用法示例:

@IBOutlet weak var printView: NSView!
….
let printOperation = NSPrintOperation(view: printView!)

听起来你已经用密码提示解决了这个问题;你还有什么想解决的吗?