2013-04-23 2 views
0

Я использую Python и wxpython для gui. Я пытаюсь подключить туннель ssh. После подключения к ssh требуется открыть новый терминал и продолжить работу на локальном компьютере. Как достичь этого?Не выходя из ssh_tunnel, откройте новый терминал

Я попытался подпроцесс, pexpect и paramiko, но все они способны подключаться к SSH, но не открывать новую teminal

Ниже мой код там, который я попытался с 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([[email protected]~]$) 
# here after its connects to ssh then command wont be executed 
c.sendline("xfce4-terminal") 

по 24/04/2013 Я могу открыть новый терминал, но что происходит, когда новый терминал откроет элементы управления из gui, туда не идет. Любая помощь?

+0

Вы хотите открыть новый терминал на локальном клиенте? – poolie

+0

@poolie: да. после подключения к ssh я должен сделать несколько операций на локальной машине. – nammu

ответ

2

Открытие нового местного терминала и подключение существующего процесса к нему несколько сложнее. Есть по крайней мере три подхода:

  1. Откройте терминал, прежде чем начать подключение, и запустить весь код, который пытается установить соединение с внутри него. Это проще всего. Главный недостаток заключается в том, что терминал появится, даже если соединение не удастся, что может быть тем, чего вы хотите избежать.

  2. Запустите попытку подключения с сеансом tmux или screen, и если вы обнаружите, что это удалось, повторно подключите этот сеанс к новому терминалу.

  3. Сделайте программу Python предоставлением pty, к которой терминал может подключаться, - вашей программе необходимо будет повесить и передать вход и выход между удаленным соединением и pty.

Смежные вопросы