Vnc

緊密的vncserver相同的版本不同的行為

  • June 14, 2015

我不確定這屬於 StackOverflow 還是這裡,但由於這些程序可以在一個版本的 Ubuntu 上執行,我在這裡嘗試。

我們有一個小型 python 應用程序,它每天在伺服器上啟動一次虛擬 X 顯示,然後執行幾個需要 X 顯示的程序。該程序在 Ubuntu 10.04 上執行良好,並在 12.04 的伺服器上繼續正常執行。

現在我們正在考慮使用 14.04 啟動伺服器,但此應用程序無法執行,儘管所有先決條件都已滿足(最新版本的PyVirtualDisplay和tightvncserver)。

在 14.04 這個程序失敗了,調試中最大的問題是,我們不能像在 12.04 伺服器上那樣偷看 X 螢幕,因為在 14.04 它要求輸入密碼。我預計這是tightvncserver軟體中的一些安全更改,但在 12.04 和 14.04 上,這是 1.3.9 版本,儘管 Ubuntu 特定版本不同(6.2 與 6.4)。

我使用客戶端機器上的同一個 VNC 客戶端連接到兩台伺服器。

我可以嘗試什麼來擺脫密碼提示並繼續查看(其他)可能有什麼問題?我確信自從伺服器啟動以來沒有設置密碼,我無法開始猜測它可能是什麼。

您應該檢查Xvnc -version(在 14.04 上)是否為您提供:

Xvnc version TightVNC-1.3.9

如果連接到 pyvirtualdisplay 創建的 vnc 伺服器實例,它可能不會提示您輸入密碼。

原因是 pyvirtualdisplay 通過檢查文件是否/usr/bin/Xvnc存在並在您指定xnvc後端時呼叫該執行檔來檢查要安裝的tightvncserver。然而,該文件是一個連結到管理的替代方案,/etc/alternatives/例如可以指向vnc4server(該伺服器需要密碼,並且是 IIRC,如果您想通過 VNC 共享您的桌面,則安裝該伺服器)。

Xvnc您可以通過執行來更改替代方案:

sudo update-alternatives --config Xvnc

並選擇tightvncserver選項。我不確定這對於依賴於其他(目前)選擇的伺服器替代方案的程序是否有安全副作用。

因此,如果可以,您應該更改引入的源pyvirtualdisplay並添加以下行(在呼叫之前Display()

import pyvirtualdisplay.xvnc
pyvirtualdisplay.xvnc.PROGRAM = "Xtightvnc"

這會強制 pyvirtualdisplay 庫使用正確的伺服器二進製文件來繞過Xvnc選定的替代方案。

引用自:https://unix.stackexchange.com/questions/209556