1

我正在尝试通过结构打开一个交互式 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$ |

然后,如果我尝试在远程提示符上输入命令,它将在本地执行并返回到本地提示符。有谁知道解决方案?

注意:我知道 fabric open_shell,但这对我不起作用,因为 stdout 落后,导致它无法使用。

4

1 回答 1

0

稍微修改一下就可以了:

def test_ssh():
    from subprocess import call
    call('ssh user@1.2.3.4 -i "bla.pem"', shell=True)

正如这个问题的答案所暗示的,错误表明错误来自 ssh 无法连接到后台进程的标准输入/输出。

织物任务不会在call后台结束,但只要它不干扰我的标准输入/输出,我就可以了。

于 2012-12-10T14:58:18.263 回答