緊密的vncserver相同的版本不同的行為
我不確定這屬於 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
選定的替代方案。