我正在使用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的控件不会去那里时会发生什么。有什么帮助吗?
答案 0 :(得分:2)
打开一个新的本地终端并将现有进程连接到它有点复杂。至少有三种方法:
在开始连接之前打开终端,并运行尝试从其中建立连接的所有代码。这是最简单的。主要缺点是即使连接失败也会出现终端,这可能是您想要避免的。
使用tmux
或screen
会话运行连接尝试,如果您检测到它成功,则将该会话重新连接到新终端。
让您的Python程序提供终端可以附加的pty - 您的程序需要挂起并在远程连接和pty之间传递输入和输出。