在不退出ssh_tunnel的情况下,打开新终端

时间:2013-04-23 05:04:32

标签: python wxpython paramiko pexpect

我正在使用Python和wxpython用于gui。我正在尝试连接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的控件不会去那里时会发生什么。有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

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

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

  2. 使用tmuxscreen会话运行连接尝试,如果您检测到它成功,则将该会话重新连接到新终端。

  3. 让您的Python程序提供终端可以附加的pty - 您的程序需要挂起并在远程连接和pty之间传递输入和输出。