2011-06-10 78 views
15

我刚刚偶然发现了Fabric,并且文档并没有真正地说明它是如何工作的。理解织物

我的教育猜测是你需要在客户端和服务器端安装它。 Python代码存储在客户端,并在命令运行时通过Fabric的有线协议传输。服务器使用OpenSSH SSH守护程序通过~/.ssh/authorized_keys文件为当前用户(或特殊用户,或在主机名中指定的fab命令)接受连接。

这是正确的吗?如果不是,它是如何工作的?

回答

16

从文档:

织物是一个Python(2.5或更高)库和命令行工具,用于简化应用程序部署或系统管理任务SSH的使用。

它提供了执行本地或远程shell命令(通常或通过sudo)和上传/下载文件的基本操作,以及辅助功能,如提示正在运行的用户输入或中止执行。

因此,它就像ssh进入一个盒子并运行你输入到run()/sudo()的命令。

没有代码转移,所以你只需要在远程机器上运行ssh并且有某种shell(默认情况下是bash)。

如果你想远程访问一个python解释器,你更像是在寻找像execnet这样的东西。

如果您想了解关于远程机器上的执行情况的更多信息,请参阅文档的this section

+1

+1来完成。我将接受的答案转换为这个答案,因为它提供了一个更清晰,更直接的答案,并链接到另一个尝试远程执行代码的项目! – 2012-03-27 18:12:37

3

大部分你所说的都是正确的,除了“fabfile.py”文件只需存储在你的客户端。像OpenSSH这样的SSH服务器需要安装在您的服务器上,并且需要在客户端上安装SSH客户端。

Fabric然后依次登录到一个或多个服务器并执行“fabfile.py”中定义的shell命令。如果您位于与“fabfile.py”相同的目录中,则可以通过“fab -list”查看可用命令列表,然后选择“fab [COMMAND_NAME]”执行命令。

服务器上的用户不需要添加到“〜/ .ssh/authorized_keys”中,但是如果是这样的话,则每次执行命令时都不必输入密码。

+0

因此,当Fabric打开SSH连接时,它会在另一侧启动'fab'命令,或者它是否启动常规的'python'进程? – 2011-06-10 15:49:53

+0

它启动了常规shell命令,当然也可以是python。 – 2011-06-10 18:09:45

+0

因此,基本上,它不能远程执行任意的python代码,对吧? – 2011-06-11 17:19:21