Режим Paramiko X11 с программированием на Python

Мне не удается использовать модуль Python Paramiko, проходящий через его функции управления ssh X11.
Я хотел бы использовать его так, как если бы я использовал опцию ssh -X.
Я пробовал несколько решений, но ничего не работает в моей системе.

Вот код, который я попробовал:


client = paramiko.SSHClient()   
client.set_missing_host_key_policy(AutoAddPolicy())   
client.connect(machineName, username=xxx, password=xxx)  
t = client.get_transport ()  
chan = t.open_session ()  
chan.request_x11 ()  
chan.set_combine_stderr (True)  
chan.exec_command (xxxxx)  # the command that should display a X11 window  
bufsize = -1  
stdin = chan.makefile('wb', bufsize)  
stdout = chan.makefile('rb', bufsize)  
stderr = chan.makefile_stderr('rb', bufsize)  
for line in stdout:   
    print '... ' + line.strip('\n')  
client.close()  

Я также попытался (вместо exec_command):

chan.get_pty("vt100", 80, 50)  
chan.invoke_shell()  
chan.send(xxxxx) # the command that should display a X11 window  

К сожалению, мое приложение зависает в тот момент, когда обычно появляется окно X11. Примечание: если я запускаю команду без отображения окна X11, она работает отлично.

Спасибо за помощь,
С уважением

2 ответа

Решение

Мне нужно было использовать paramiko для запуска GUI в другом окне X11 и нашел этот пост. Я думаю, что вам может понадобиться добавить несколько строк, чтобы это работало. Все дело в параметре обработчика.

Здесь назначьте функцию для входящих подключений X11.

chan.request_x11 (handler=testFunc())  

И написать простую.

import commands
def testFunc():
    cmd = "xterm"
    result = commands.getoutput(cmd)

После этого должно появиться новое окно. По крайней мере, это работает для меня.

Читая код paramiko, я понял, что paramiko реализует только способ установки канала x11. Он не подключает канал к локальному дисплею x11. Это оставлено вам.

Пожалуйста, посмотрите этот ответ для рабочего примера того, как это сделать: /questions/4556713/x11-pereadresatsiya-s-paramiko/4556733#4556733

Другие вопросы по тегам