嵌入式 VNC 会话

嵌入式 VNC 会话

我需要的是允许远程用户通过 VNC 访问主机 (Ubuntu)。问题是,用户只能使用特定软件,不能使用其他任何软件。

我目前的解决方案是使用 x-gtk-vnc 在客户端的 html 页面中嵌入特定的 Xwindow。这可行……但弹出选项不会在客户端注册(因为它们被视为单独的窗口)。

可能的解决方案 #1 是使用脚本来报告新窗口何时打开。但是,我不知道有任何 shell 命令可以做到这一点(xwininfo 要求您选择一个窗口),而且我可能必须将大量可能的弹出窗口硬编码到 html 中。

可能的解决方案 #2 围绕创建一个裸虚拟桌面展开,其中感兴趣的软件作为主应用程序运行(不能最小化或关闭,没有任务栏等...),并且所有弹出菜单都出现在前台。不幸的是,我不知道如何做到这一点。我也可以使用嵌入在 html 中的 x-gtk-vnc 连接到特定桌面。

有人能用这两种解决方案给我指出正确的方向吗?我个人更喜欢 #2。也欢迎其他解决方案。

答案1

解决方案 2 会容易得多。

假设您正在使用vnc4viewerUbuntu 附带的软件包,只需编辑~/.vnc/xstartup远程用户将在其下运行的用户帐户的脚本并将其替换为以下内容:

/bin/bash #!/bin/bash

函数 start_and_wait {
    #将您需要运行的程序的命令行放在这里,后面跟着
    #ampersand (&)。例如,我们将启动 gedit:
    编辑 &

    等待$!
    开始并等待
}

[ -x /etc/vnc/xstartup ] && 执行 /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot-纯灰色
元城市 &
开始并等待

metacity这将自动启动 GNOME 的窗口管理器,因此可以合理地处理弹出窗口。(如果需要,它们甚至可以Alt+Tab来回移动。)虽然用户可以最小化和调整窗口大小,但它只会为用户提供一个无法执行任何操作的空桌面。没有面板、没有菜单、没有图标,什么都没有。如果程序因任何原因退出,脚本还会重新启动程序。

完成这些后,只需启动即可vncserver。您可以将此命令放入文件中/etc/rc.local(或编写适当的启动脚本),exit 0在每次启动时启动服务器的行之前:

su username -c "vncserver :7"

这将在桌面(端口 5907)上启动服务器,:7因此您可能启动的任何其他 VNC 服务器都不会妨碍您,并且您将有一个可预测的桌面号码放入 HTML 文件中。

确保为远程用户使用单独的用户帐户,并且该帐户已充分锁定,因为即使他们只能访问一个程序,他们仍然可以通过多种方式进一步访问系统。(文件对话框、可能打开 shell 的命令等)

请注意,虽然可以使用任何窗口管理器,并且大多数人会使用简单的窗口管理器twm(或现在孩子们正在使用的任何窗口管理器),但我坚持使用metacity它,因为它默认包含在内,并且使事情保持简单。

相关内容