Windows环境下搭建web browser可访问的远程桌面环境

    由于自动化的测试平台是通过web搭建的, 但是想远程访问client桌面时还需要用vnc viewer或windows remote的方式 所以一直想做一个一站式的交互方式, 随即就研究了一下通过web端通过html的方式直接在浏览器中打开一个client desktop, 并可以远程进行控制.

    client本身都安装了tight vnc, 所以想到了通过noVNC搭建一个server, 用于转发端口到web上.

环境准备

  • tight vnc
  • no vnc
  • nodejs
  • tomcat 或者 IIS

搭建步骤

    1. client端安装tight vnc -- 官网下载tightvnc, 安装选择completed, 启动server后进行设置, 注意, 这里需要保留一个可以外部转发的端口, 在extra下设置一个port, 这里我设置的是5901, 分辨率根据需求自定即可, 我设置的是1366x768.

         Windows环境下搭建web browser可访问的远程桌面环境_第1张图片

    2. server端安装nodejs, 并下载需要的npm module, 截图如下

node install 

    Windows环境下搭建web browser可访问的远程桌面环境_第2张图片

    3. 安装noVNC -- github找到noVNC项目clone到本地

git clone https://github.com/novnc/noVNC.git

    4. 进入novnc/utils 下点击launch.sh (windows平台下需要有 bash), 会自动clone websockify 这个项目到目录下.

    5. cd到websockify/other/js下,通过websockify对端口进行代理, 代码如下

node websockify.js 8000 :5091

    6. 将noVNC放到tomcat 的webapps下进行部署, 注意,这里需要将vnc.html改成index.html, 我是copy了一个vnc.html rename成了index.html, 这样tomcat能直接找到主入口.

登录web remote desktop

    浏览器输入http://:/

    例: http://192.168.31.13:8080/noVNC-master

    进入后左侧可以设置web socket的地址, server 填写IP 和 port, port这里我转发的是8000, 具体的port可以参考node 启动websockify时5901转发到的port.

    点击 Connect, 就可以登录到remote的client了, 这里遇到了两个问题, 一个是桌面会由于分辨率设置问题显示不全, 需要调整tight vnc的分辨率, 第二个问题是登录到的windows client显示不出来鼠标的轨迹, 这个问题目前还没有解决,不过目前更多的是view only的需求, 因此还没急着去研究.

记一下想法

    引入这个技术手段主要可以解决一个一站式交互的问题, 通过点击网站上的 link可以直接打开一个远程桌面, 或创建新的VM后可以直接在网页上进行访问,免除了一些操作, 不过网页版的remote desktop也有很多不足之处, 比如使用快捷键比较不方便, 分辨率问题等, 这个solution主要还是对于view only的模式比较有帮助, 之后考虑配合docker container进行一些实现, 可以对run selenium自动化的client进行一些监控, 而且个人觉得noVNC在linux平台下的搭建会相对更加简单一些, 可行性还是有的.

https://github.com/novnc/noVNC.git4. 
https://github.com/novnc/noVNC.git

你可能感兴趣的:(Devops)