分享多个EC版本同时运行的一个方案 及纯CLI登录的讨论
shmilee opened this issue · comments
首先感谢 Hagb 的详细的文档和代码,让我少踩了一些坑。
在你的基础上,我又看了安装包内的一些脚本,重新组织了代码,写了一个多个EC版本同时运行的一个方案。
顺便填坑 #25 (comment)
Hagb的多个镜像也可以同时开,我改的初衷主要是减小镜像数量和体积,多个EC版本用到时再挂载,更自由一些。
代码放在这 https://github.com/shmilee/scripts/tree/master/easyconnect-in-docker
已测试版本有 7.6.3, 7.6.7
使用分三步:
- 构建build一个多EC版本共用的docker镜像。
- 部署deploy多个EC版本到某目录,不同版本有各自的启动脚本start.sh, 以及处理各种问题、启动其他服务的脚本hook_script.sh
- 运行不同版本的start.sh,同时向 docker run 传所需的OPTIONS。
运行正常后,修改版本对应的desktop文件,之后就可以不用命令行打开了。
需要注意的是有几个不同的默认值:
- 默认用的X11显示登录界面,VNC的安装、启动放在hook_script.sh,对于使用VNC的用户每次都需安装VNC相关的包,因此可以移入dockerfile,以节省很多时间。
- 默认IPTABLES的设置是关闭的。
- 代理软件danted配置内权限相关的部分做了修改。
- 添加的sshd默认是关闭的。
- EC调用浏览器打开网址,处理方式类似之前网址写到文件,不过打开不是在容器内窗口显示,而是在host用默认浏览器打开。
- 不同EC版本保存的登录信息在各自的conf目录内,不需要单独挂载处理。
其他反馈:
- 登陆过程中的
cms client connect failed
, 版本7.6.7不需hack,EC能自己处理。 - IPTABLES默认关闭,在我使用过程中没发现问题。
- 安装包内的脚本最主要的是postinst,处理文件权限相关的部分。
- 为了能通过desktop文件运行并且不打开终端窗口,需要docker run不带
-i
。
更新添加一个纯 cli 的版本:easyconn_7.6.8.2-ubuntu_amd64.deb。
未找到官方下载地址,天河那边给的,已上传到github方便大家下载。
现已测试版本有
- 7.6.3
- 7.6.7
- 7.6.8(CLI)
7.6.7 与 7.6.8(CLI) 都可以正常登录天河,CLI版本自动登录正常。唯一的问题是CLI版本的密码只能明文输入。
======
已将7.6.8(CLI) 的resources/bin合并到7.6.3
,7.6.7
内,设置USEUI=<X11,VNC,CLI>方便以三种方式登录。
这个好强啊!
(原谅我刚才情不自禁发了一句没有意义的话)请问我能把这个仓库在 README 里提到吗?
(不过现在电脑不在身边,得多一两天才能操作)
可以的啊,多一点人知道,就有多一点人测试这个包兼容哪些版本了。
不过我看打包的deb不怎么规范,包含了多余的mac平台的文件,所以极有可能是为客户需求临时做的,而不是正式发布版本。说不定版本检查可能比较松?
可以的啊,多一点人知道,就有多一点人测试这个包兼容哪些版本了。
不过我看打包的deb不怎么规范,包含了多余的mac平台的文件,所以极有可能是为客户需求临时做的,而不是正式发布版本。说不定版本检查可能比较松?
版本检查看起来是有的,不过我发现可以把不同版本的部件组合起来使用,昨天把 7.6.3 的和 7.6.8 cli 的组合起来用实现了 7.6.3 的纯 cli 版本。
大体操作就是把旧版的包中的 ECAgent
用新版的替换(起个别的名字放在统一目录,不替换也行)了,把 easyconn
也加进去,然后运行 ECAgent
和 easyconn
登陆,成功登陆后(比如通过杀掉 ECAgent
)阻止它发心跳包(发心跳包反而会导致断线,不发一切正常)。
这样可玩性就增加许多了呀!
一开始我只把easyconn
放到旧版两个来用,结果最后的登录过程一直在死循环,原来是少了resources/bin/ECAgent
。
为了减少三个版本占用的体积,之前对比过他们的文件。resources/lib64,三者相同。7.6.3与 7.6.7 GUI相关的大部分也相同。所以如果碰到其他7.6.x的版本混搭用,留意一下resources/{bin,conf},估计问题也不大。
一开始我只把
easyconn
放到旧版两个来用,结果最后的登录过程一直在死循环,原来是少了resources/bin/ECAgent
。
为了减少三个版本占用的体积,之前对比过他们的文件。resources/lib64,三者相同。7.6.3与 7.6.7 GUI相关的大部分也相同。所以如果碰到其他7.6.x的版本混搭用,留意一下resources/{bin,conf},估计问题也不大。
(突然发现我们偏题好久了… 改一下这个标题或者新开一个 issue 吧)
我在 Dockerfile 中这样给纯 cli 的 3.6.3 版清除无用文件,效果明显:
rm -rf /tmp/* && \
cd /usr/share/sangfor/EasyConnect/ && { rm -f * ; true ; } && rm -fr locales/ ec/ && \
cd resources/ && rm -rf *.asar *.png re/ && \
cd lib64 && rm libf* libg* libnssckbi.so libnsssysinit.so libnssdbm3.so libsoftokn3.so libsqlite3.so libssl3.so