簡體   English   中英

Windows中的Python和X11連接

[英]Python and X11 connection in windows

我正在嘗試從我的遠程Linux服務器啟動和X11連接到我的本地Windows機器。

我已經下載了Xming portable,如果我啟動了一個ssh連接到我的Linux機器並啟動Firefox,它將傳遞給Xming並顯示在我的Windows機器上。

我現在試圖在python中實現相同的功能。 但我不認為我理解正確。

我正在使用以下代碼

import paramiko
import time

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server-1', username='me', password='xxxxxxx')
stdin, stdout, stderr = ssh.exec_command("firefox")

t = ssh.get_transport ()
chan = t.open_session ()
print(chan.request_x11())

print(stdout.readlines(), stderr.readlines())

time.sleep(100)

只是為了得到以下錯誤:

 Error: GDK_BACKEND does not match available displays

我也讀過自己可以啟動的python和Xll會話。 但是現在我只需要將它轉發到我的Xming服務器。

我只了解X11連接的基本功能,我在這里看到的所有示例都是針對python腳本在Linux上運行的。

問候

我想通了我自己。 雖然我不完全了解細節,但我想Xming必須掛鈎到SSH套接字或其他東西。 無論如何,我需要做的就是將命令更改為以下內容

stdin, stdout, stderr = ssh.exec_command("export DISPLAY=localhost:10.0; xterm & firefox &")

和Firefox在Xming中打開。 另請注意,此處將阻止python腳本,直到Firefox應用程序再次關閉。

所以我的最終代碼如下所示

import paramiko

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('server-1', username='me', password='xxxx')
stdin, stdout, stderr = ssh.exec_command("export DISPLAY=localhost:10.0; xterm & firefox & env")


print(''.join(stdout.readlines()), ''.join(stderr.readlines()))

ssh.close()

由於Xming是一個命令行應用程序,因此也應該可以從Python應用程序內部啟動它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM