【发布时间】:2012-11-23 01:50:29
【问题描述】:
我正在尝试通过 fabric 打开一个交互式 ssh shell。
要求:
- 在远程连接字符串中使用结构主机
- 在当前终端中打开完全交互式的 shell
- 适用于 osx 和 ubuntu
- Fabric/python 和远程之间不需要数据传输。所以织物任务可以在后台结束。
到目前为止:
fabfile.py:
def test_ssh():
from subprocess import Popen
Popen('ssh user@1.2.3.4 -i "bla.pem"', shell=True)
在终端:
localprompt$ fab test_ssh
localprompt$ tcsetattr: Input/output error
[remote ubuntu welcome here]
remoteprompt$ |
然后,如果我尝试在远程提示符上输入命令,它会在本地执行,然后我会退回到本地提示符。 有谁知道解决办法吗?
注意:我知道织物 open_shell,但这对我不起作用,因为标准输出滞后,导致它无法使用。
【问题讨论】:
-
为什么要用fabric打开ssh shell?为什么不将命令作为结构任务运行?
-
上面的代码根本没有使用fabric。 Popen 是一个本地命令。我认为在结构任务中执行它是没有意义的。
-
嗯,通常我通过织物做一些事情,但有些事情只需要一个交互式外壳。我想用fabric 来做这件事,因为现在我有大约20 多个sh 脚本来连接我的各种服务器,而且保持连接字符串同步开始让我烦恼。 Fabric 将是执行此操作的合适工具,因为它已经拥有所有连接字符串。
标签: python ssh subprocess popen fabric