我正在使用fabric连接到远程主机。我打电话给主管看状态。但我不知道如何使用结构文件退出超级用户界面。怎么做?
我的fabfile是这样的:
from fabric.api import run
from fabric.api import env
env.hosts = [
'my_host'
]
def my_fab():
run("supervisorctl -u 'me' -p 'aaa'")
>>> fab my_fab
>>> # plenty of stdout
>>> supervisor> # I'm stuckled here
答案 0 :(得分:1)
这相当于使用supervisorctl
而非使用fabric
Fabric对命令执行一次性调用,然后返回。在控制台上不应该是长期活动。您的问题的解决方案不是进入交互模式(等待进一步的输入),而是仅在非交互模式下调用supervisor
。
supervisorctl
Supervisor控制命令提供交互式和非交互式模式。
你是非交互模式。
E.g。在我的安装中,我有一个名为logproxy
以这种方式呼叫supervisorctl
:
$ supervisorctl status logproxy
logproxy STOPPED Not started
将此应用于您的fab任务将使其正常工作。
以下示例代码来自"欢迎使用Fabric!"它看起来像是:
from fabric.api import run
def super_status():
uname = "zen"
pswd = "then"
cmd = "supervisorctl -u {uname} -p {pswd} status logproxy".format(uname=uname, pswd=pswd)
# to see the command you are going to call, just for show
print cmd
# and run it
run(cmd)
并将被使用。
$ fab -l
列出来。
并调用任务super_status
:
$ fab super_status -H localhost