Fabric - 如何在远程计算机上使用交互式shell?

时间:2015-03-30 19:56:44

标签: python fabric

我正在尝试使用Fabric在远程计算机上运行命令。

这很好用,直到远程计算机上的命令是交互式的。在这种情况下,Fabric返回交互式shell,但强制我输入所需的信息,而我正在尝试发送一个在远程执行所有操作的命令,因此我可以自动执行该过程。

示例:

from fabric.api import *
env.hosts=['myhost.mydomain']
env.user='root'
run(test1/myapp; exectask; exit)

我在远程机器上运行一个cli应用程序,它使用交互式shell,所以它等着我输入命令(exectask);然后一旦完成,退出,我调用exit命令。

现在发生的是应用程序启动,Fabric向我显示交互式UI,我仍然需要输入exectask,然后退出。

如何告诉fabric运行该应用程序,然后将命令传递给交互式shell,然后退出以退出?

我看到Fabric具有提示功能,但这是要求用户输入数据,而我只想传递命令并获得结果。

1 个答案:

答案 0 :(得分:1)

您可能希望查看pexpect,一个类似expect的纯Python模块。从本质上讲,它允许程序生成外部程序或进程,然后控制它就像人类正在与它进行交互一样。你编程应该看到的程序(因此名称),然后采取什么行动。