【问题标题】:Without exiting from the ssh_tunnel, open new terminal不退出 ssh_tunnel,打开新终端
【发布时间】:2013-04-23 05:04:31
【问题描述】:

我正在为 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 打开控件时不会去那里。有什么帮助吗?

【问题讨论】:

  • 你想在本地客户端打开一个新终端?
  • @poolie:是的。连接到 ssh 后,我必须在本地机器上做一些操作。

标签: python wxpython paramiko pexpect


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 2017-11-01
    • 2017-02-07
    相关资源
    最近更新 更多