[Share Experiences] 一台设备控制一批设备,最终还是选择了VNC方式,支持一键配置。
Tofloor
poster avatar
babyfengfjx
Super Moderator
CQA
2023-08-16 19:16
Author

背景

在日常测试过程中,我们都是一人测试管理多台设备,每天看到小伙伴坐在工椅上,从这里蹬到那里,一下操作这个设备,一下操作那个设备,像极了四处乱窜的“兔子”。

主要是有些时候在其他设备上发现的问题,需要截图,修改文件配置,要做信息复制共享发送到聊天工具,都是非常繁琐的事情,也降低了工作效率,为了优化这个工作场景,需要有一个更好的方案,在一台主工作设备上来管理控制其他设备,并且不影响测试结论和操作效率,主打的就是一个“一坐一天,事事高效”的效果(ChuiNiu).

方案实践

说道这种远程控制,我想每个人都有自己热衷的方案,可以说是信手拈来,五花八门,我觉得这个没有什么所谓的好坏和最好,适合你当下的场景就是最好,对于工具应该是没有最好的,只有最适合的。

实践过程中,主要尝试了以下方案:

  • 方案1:向日葵、todesk等常用成熟的远程控制工具;
  • 方案2:RDP协议连接方式;
  • 方案3:VNC连接方式;

方案评价

方案1:向日葵、todesk等常用成熟的远程控制工具;

这个思路应该是最容易操作的,直接下载对应的工具安装连接使用就行,也能一个客户端控制多设备,算是非常好操作的。

但是从体验上来说,我觉得不太方便简洁,而且画质效果比较差,我本身是局域网,完全没必要绕到公网再回来,而且哪些广告性的内容让我无法体验沉浸式的工作场景,所以首先就放弃了这种最方便的方案。

方案2:RDP协议连接方式;

我们日常都会使用Windows的系统来对比一些deepin系统的功能,所以我们也会在Windows设备上来操作deepin设备,那微软家的远程桌面是个好东西,当时就想到用RDP协议来控制linux桌面,对于V23来说XRDP还没集成到仓库,随即就让研发同学帮忙打包上仓库了,后面大家就可以直接安装使用了。

因为RDP方式只需要在deepin中安装xrdp 启动服务就可以使用了,这里就不做具体的描述,只需要完成如下安装配置就可以了:

1、更新系统
sudo apt-get update
2 安装xrdp
sudo apt-get install xrdp
3 设置开机启动
systemctl enable xrdp
4 启动xrdp
systemctl start xrdp

就是这么简单,执行完上面的动作被控端就完成了设置。

避坑:

连接后黑屏:

其实真正难点是在连接的时候,这里有不少坑,因为很多朋友发现连接的时候根本不行,连接上就是黑屏!!!

大概率你连接的时候是这样(shai)的:
image.png
到底哪里出了问题?

这个也是我觉得RDP方案没有VNC方案好的地方。

在使用RDP连接的时候用的账户一定不能是登录进入桌面的账户,也就是说要么你这个账户是注销了的,要么使用一个没有登录桌面的另一个账户登录。

这里我新建了另一个账户(deepinxrdp),然后给RDP登录使用,效果就来了:

image.png

连接后卡顿

解决上面黑屏的问题后,你可能会发现,在通过RDP方式连接的时候,操作不太丝滑,即使你是局域网,虽然画质感觉可以,但是操作的时候像放PPT样的体验,这也没法忍啊!

下面来优化一下体验:

打开【显示选项】在体验标签中,选择LAN模式,这样对流畅度会有一定的提升(因为我就是在局域网)image.png

至于其他的在被控端去优化XRDP配置的方式没有尝试,这块有经验的朋友可以跟帖提供一下详细的配置方案和原理。

总结

RDP协议连接的方式也算是比较广泛的玩法,但更多的是在Windows生态中使用,而且我们发现不能多端同时查看一个设备界面,优点是配置简单,使用上也能够满足。

方案3:VNC连接方式:

要说VNC(虚拟网络控制台)这种连接方式在使用linux的朋友应该没人没使用过吧,记得最开始使用的时候就是用华为云的时候,在一个刀片服务器上搭建了1000个网元设备,每天就是重复的创建虚拟机、搭建环境,在连接服务器的时候,就是通过VNC的方式来查看到服务器输出内容的,这也是我们最常用的一种连接方式。

在deepin上使用这种协议来连接那也是相当方便的,不过貌似配置方面比RDP的稍微复杂那么一丢丢:

服务配置

请直接将下方内容保存为一个vncinstall.sh脚本文件,在终端执行就完事了。

也可以直接下载附件执行vncinstall.rar

#!/bin/bash

password="123456"  # 这里请改成你自己登录账号的密码就可以,下方内容都不用变

# Step 1: 安装x11vnc
echo $password | sudo -S sudo apt update && sudo apt install x11vnc -y

# Step 2: 设置x11vnc密码
sudo x11vnc -storepasswd $password /etc/x11vnc.pass

# Step 3: 创建服务
sudo tee /etc/systemd/system/x11vnc.service > /dev/null <

执行安装

将上方附件下载,或者自己复制脚本内容保存.sh文件:

# 给文件加上执行权限
sudo chmod +x vncinstall.sh
# 执行脚本,提前进入文件所在目录并打开终端
./vncinstall.sh

到这里被控端的配置就完事了。

远程连接

这个时候连接就方便很多了,可以采用任何一款VNC连接查看工具来连接就行,没有什么额外的配置,而且可以多个客户端同时连接一个被控端:

  • Windows自带远程桌面:(优势:界面简洁、支持剪切板共享、支持键盘快捷键操作,很多工具是不支持键盘快捷键操作的,这个你们可以自己去尝试)

有的朋友在通过这个连接的时候发现也连接不上,可以尝试选择vnc-any模式。

image.png

连接上的效果:(操作非常丝滑,画质也是非常OK,感觉就是一个实体机的体验,没有太大差别,基本满足我的需求了)

image.png

  • 通过神器mobaxterm来管理,同时还能管理ssh连接,文件上传下载,同样支持剪切板共享,只是不支持键盘快捷键
  • 其他更多连接工具大家可以自行去尝试了,对于VNC连接的时候,也是可以设置一些参数的,只要能满足你个人的需求就行。

总结:

整体来讲,VNC的配置在deepin中也是非常简单的,看起来有几行脚本,但实际上就是写了一个服务单元,来让systemd管理而已,所以也没有什么门槛,关键是这个连接是非常方便,流畅度,画质都非常的好,而且支持的工具也特别多不是。

讨论

我看文章还没写完就已经有朋友提供了其他解决方案和经验分享,期望这个只是抛砖引玉,大家能有更多实战使用的经验分享出来,可以解决这类场景,让更多人少走弯路,评论区留给大伙了😃

无头服务器是怎么玩的?

在这种场景下其实还有一种真是情况,就是我们大多服务器是没有外接显示器的,那么通过这种远程连接的方式你会发现界面虽然能显示,但是分辨率是不正常了,对于服务器来说本来用界面的情况不多,倒也没啥影响,但要是日常测试的设备这么玩那肯定难受的不行。

目前还没有找到合适的软件配置解决方案,说是可以使用显卡欺骗器,几十块就可以搞定。

这方面有经验的同学也可以提供一些经验。

Reply Favorite View the author
All Replies
1 / 2
To page
pzm9012
Moderator
2023-08-16 19:21
#1

kissing_heart以后多出点文档,大家爱看

Reply View the author
阿尼樱奈奈
Moderator
2023-08-16 19:22
#2

like

Reply View the author
yanjuner
Super Moderator
2023-08-16 19:27
#3

applaud 以后多出点文档,大家爱看

Reply View the author
DebuggerX
deepin
2023-08-16 19:27
#4

可以试试nomachine

https://www.nomachine.com/

当你需要在局域网跨win/mac/linux互相远程,并且需要剪切板共享、互传文件甚至usb等外设共享的时候,这玩意是我尝试了无数工具后得到的最优解

Reply View the author
忘记、过去
deepin
2023-08-16 19:39
#5

感觉 Deepin 上 VNC 配置更方便亿点,毕竟是 LightDM joy

装了 x11vnc 写个启动服务开机自启就行,vncviewer 直接远程连接......除了大小写和数字键盘有亿点问题之外都挺好的 doubt

加上了 -​capslock -nomodtweak 参数启动服务后大小写和数字键盘能用,但是打不出来 < 就很伤......

Reply View the author
蔡EEPIN
deepin
2023-08-16 19:59
#6

rustdesk + 自建server 真香

Reply View the author
忘记、过去
deepin
2023-08-16 21:50
#7

连接无显示器的机器的时候,可以修改 lightdm 的启动配置文件,添加 display-setup-script(和最早以前配置 I+N 双显卡机器差不多)


先写个脚本 display-setup.sh,放在类似 /etc/lightdm/ 这个文件夹下,此处以 /etc/lightdm/display-setup.sh 为例

#!/bin/bash
xrandr --fb 1920x1080 --rate 60 # 设置分辨率和刷新率
exit 0 # 可能要加上,防止上一步设置出错导致脚本异常退出,lightdm 起不来

P.S. 记得给脚本加上可执行权限


然后修改 /etc/lightdm/lightdm.conf,找到 [Seat:*] 配置部分,把原来的 #display-setup-script= 改成 display-setup-script=/etc/lightdm/display-setup.sh,保存后执行 systemctl restart lightdm 重启 LightDM 即可生效,即使没有连接显示器也可以保证 VNC 远程时分辨率和刷新率正常

P.S. N卡想这么玩儿似乎必须要安装闭源驱动才行的样子......A卡就很省心了
P.S.2. 不一定要修改 /etc/lightdm/lightdm.conf,也可以在 /usr/share/lightdm/lightdm.conf.d/ 文件夹下照猫画虎写个 conf 配置文件,内容只提供 [Seat:*] 部分对 display-setup-script 的修改即可

Reply View the author
sammy-621
deepin
2023-08-16 22:29
#8

这得加精置顶啊~

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-08-17 00:11
#9
忘记、过去

连接无显示器的机器的时候,可以修改 lightdm 的启动配置文件,添加 display-setup-script(和最早以前配置 I+N 双显卡机器差不多)


先写个脚本 display-setup.sh,放在类似 /etc/lightdm/ 这个文件夹下,此处以 /etc/lightdm/display-setup.sh 为例

#!/bin/bash
xrandr --fb 1920x1080 --rate 60 # 设置分辨率和刷新率
exit 0 # 可能要加上,防止上一步设置出错导致脚本异常退出,lightdm 起不来

P.S. 记得给脚本加上可执行权限


然后修改 /etc/lightdm/lightdm.conf,找到 [Seat:*] 配置部分,把原来的 #display-setup-script= 改成 display-setup-script=/etc/lightdm/display-setup.sh,保存后执行 systemctl restart lightdm 重启 LightDM 即可生效,即使没有连接显示器也可以保证 VNC 远程时分辨率和刷新率正常

P.S. N卡想这么玩儿似乎必须要安装闭源驱动才行的样子......A卡就很省心了
P.S.2. 不一定要修改 /etc/lightdm/lightdm.conf,也可以在 /usr/share/lightdm/lightdm.conf.d/ 文件夹下照猫画虎写个 conf 配置文件,内容只提供 [Seat:*] 部分对 display-setup-script 的修改即可

这个方案确实可行!

当然在部分设备上采用这种方案会存在连接操作卡顿的问题,只能通过连接显示器来达到比较好的效果。

Reply View the author
MMHMM
deepin
2023-08-17 07:32
#10

kissing_heart

感谢大佬分享!!!

Reply View the author
公子独白
deepin
2023-08-17 17:35
#11

like

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-08-18 01:27
#12
DebuggerX

可以试试nomachine

https://www.nomachine.com/

当你需要在局域网跨win/mac/linux互相远程,并且需要剪切板共享、互传文件甚至usb等外设共享的时候,这玩意是我尝试了无数工具后得到的最优解

我试在V23上用这个,安装了发现不成功,安装后连应用图标都没有,也没法通过命令启动,不知道是不是系统BUG😂

Reply View the author
DebuggerX
deepin
2023-08-18 01:56
#13
babyfengfjx

我试在V23上用这个,安装了发现不成功,安装后连应用图标都没有,也没法通过命令启动,不知道是不是系统BUG😂

正常的,它的deb安装包没对dde桌面的图标做处理,自己去 /usr/NX/share/applnk/player/xdg 这个路径下拷贝 NoMachine-player-base.desktop 文件到桌面上就行了

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-08-18 02:04
#14
DebuggerX

正常的,它的deb安装包没对dde桌面的图标做处理,自己去 /usr/NX/share/applnk/player/xdg 这个路径下拷贝 NoMachine-player-base.desktop 文件到桌面上就行了

咦哟,你可真行!

不过连接的时候,被控端提示已经有设备进行了连接,但实际连接不上,感觉玩不太转这玩意😭 :
image.png

image.png

Reply View the author
希声
deepin
2023-08-18 07:31
#15
DebuggerX

正常的,它的deb安装包没对dde桌面的图标做处理,自己去 /usr/NX/share/applnk/player/xdg 这个路径下拷贝 NoMachine-player-base.desktop 文件到桌面上就行了

之前看你的blog,不是使用过xfreerdp+remote app,来集成win生态app吗,我前几天尝试过,没成,但我看了觉得如果方案成熟,还是很完美的方案

Reply View the author
DebuggerX
deepin
2023-08-18 20:31
#16
babyfengfjx

咦哟,你可真行!

不过连接的时候,被控端提示已经有设备进行了连接,但实际连接不上,感觉玩不太转这玩意😭 :
image.png

image.png

remote.jpg

这是我现在的日常:

  • 开发主力机:deepin v23
  • windows:用rdesktop连接家里pve小主机上的windows server 2012R2
  • MacOS:用千兆网线通过NoMachine连接办公室的MacBook Air
  • 常用笔记本:通过NoMachine连接局域网里装的UOS的笔记本

我用flutter做跨平台开发,这样就可以直接在“一台电脑”上同时开发调试APP在windows/linux/mac/ios/android/web下的效果了

Reply View the author
DebuggerX
deepin
2023-08-18 20:51
#17
希声

之前看你的blog,不是使用过xfreerdp+remote app,来集成win生态app吗,我前几天尝试过,没成,但我看了觉得如果方案成熟,还是很完美的方案

玩 xfreerdp+remote app 这个方案的时候我刚开始工作,还比较胆小,也不敢向公司提要求,也不想太显眼……后来我发现,需要远程的时候最爽的方式还是直接加个显示器,把整个远程桌面全屏显示在另外的显示器上,想操作哪个系统就直接把鼠标移过去完事了。

就像我上面的那张照片,Mac桌面就是远程的,整个放在副显示器上,就和直接在用MacMini没啥区别。

所以我现在到一家公司,要么直接要求给我多配显示器,要么自带,就算不需要远程的时候,多个显示器也能提高不少效率。

再来现在很多以前必须用windows的程序也都有替代了,比如office可以直接用网页的金山文档或者飞书文档,photoshop可以用网页的photopea,百度网盘迅雷啥的我可以用跑在家里机顶盒里的docker版本,日常使用需要win应用的情况也越来越少了。

Reply View the author
babyfengfjx
Super Moderator
CQA
2023-08-21 19:05
#18
DebuggerX

remote.jpg

这是我现在的日常:

  • 开发主力机:deepin v23
  • windows:用rdesktop连接家里pve小主机上的windows server 2012R2
  • MacOS:用千兆网线通过NoMachine连接办公室的MacBook Air
  • 常用笔记本:通过NoMachine连接局域网里装的UOS的笔记本

我用flutter做跨平台开发,这样就可以直接在“一台电脑”上同时开发调试APP在windows/linux/mac/ios/android/web下的效果了

玩的6

Reply View the author
希声
deepin
2023-08-22 21:03
#19
DebuggerX

玩 xfreerdp+remote app 这个方案的时候我刚开始工作,还比较胆小,也不敢向公司提要求,也不想太显眼……后来我发现,需要远程的时候最爽的方式还是直接加个显示器,把整个远程桌面全屏显示在另外的显示器上,想操作哪个系统就直接把鼠标移过去完事了。

就像我上面的那张照片,Mac桌面就是远程的,整个放在副显示器上,就和直接在用MacMini没啥区别。

所以我现在到一家公司,要么直接要求给我多配显示器,要么自带,就算不需要远程的时候,多个显示器也能提高不少效率。

再来现在很多以前必须用windows的程序也都有替代了,比如office可以直接用网页的金山文档或者飞书文档,photoshop可以用网页的photopea,百度网盘迅雷啥的我可以用跑在家里机顶盒里的docker版本,日常使用需要win应用的情况也越来越少了。

了解。。。

其实我平时总是习惯键盘和触摸板操作,主要的需求就是alt+tab键能切换所有应用,不至于一旦切换到vm,鼠标被vm捕获,快捷键切换就在vm里了(本来可以触摸板手势能弥补一些操作效率下降,但deepin触摸板多指手势支持少,且不可自定义)。而remoteapp能做到这点,能集成到linux上的任务栏,我看xfreerdp还在持续迭代这方面的能力(遵循微软相关协议)但是貌似限制很多,因时间有限,当时没成功

主要没那么多设备,只能在本机上开虚拟机,想着结合一下win的生态,一起用

是的平时开发相关的软件linux版的软件完全满足,但是一些聊天/office/做图,或者其他需求,有时候没办法

最近忙的飞起,抽时间我再搞搞,看看可用性行不行

Reply View the author
DebuggerX
deepin
2023-08-22 22:42
#20

deepin触摸板多指手势,有试过我写的手势管理器没:[经验分享] 开发了一款自定义触摸板手势的管理工具,有需要的朋友可以试试

remoteapp其实折腾起来也没啥,主要是win那边的配置。我当时是基于win7搞,需要手动装一些支持组件所以绕了些弯路,如果直接用windows server 2012R2及以上版本,根据教程配就很顺了。

Reply View the author
1 / 2
To page