0

我正在为 gui 使用 Python 和 wxpython。我正在尝试连接 ssh 隧道。连接到 ssh 后,想要打开一个新终端,并且必须在本地机器上继续我的操作。如何做到这一点?

我尝试了 subprocess、pexpect 和 paramiko,但都能够连接到 ssh 但无法打开新终端

下面是我用 pexpect 尝试过的代码:

import time
import sys
import pexpect
c = pexpect.spawn("ssh -Y -L xxxx:localhost:xxxx user @ host.com")
time.sleep(0.1)
c.expect("[pP]aasword")
c.sendline("xxxxxx")
time.sleep(0.2)
c.interact()
c.pexpect([user@host.com~]$)
# here after its connects to ssh then command wont be executed
c.sendline("xfce4-terminal")

在 2013 年 4 月 24 日,我可以打开新终端,但是当新终端从 gui 中打开控件时,会发生这种情况。有什么帮助吗?

4

1 回答 1

2

打开一个新的本地终端并将现有进程连接到它有点复杂。至少有以下三种方法:

  1. 在开始连接之前打开终端,并运行所有尝试从其中建立连接的代码。这是最简单的。主要缺点是即使连接失败也会出现终端,这可能是您想要避免的。

  2. tmux使用or的会话运行连接尝试,screen如果您检测到连接成功,则将该会话重新附加到新终端。

  3. 让你的 Python 程序提供一个终端可以附加到的 pty——你的程序需要在远程连接和 pty 之间传递输入和输出

于 2013-04-23T05:59:42.337 回答