公司最近搬了家,附近居然有家SUBWAY!!哈哈哈哈哈哈!!一个人独享12寸金枪鱼三明治的快乐!!!!
咳咳。。下面步入正题~
虽然公司搬到了集团脚底下,但是集团的内网还没有调通,登录集团OA内网系统还得用VPN。。Windows系统下VPN软件使用没什么问题,但我主力系统是Ubuntu,每回连OA办点事儿都还得切换回Windows系统下,甚是麻烦。。好在VPN提供了Linux客户端,就不报希望地去试了一下。
果然不出我所料,下载链接根本点不动。。难得倒我??
点击框框里的链接,妥妥给你下载好。然后打开终端,切换到下载目录,sudo权限dpkg安装好。
1 |
sudo dpkg -i EasyConnect_x64.deb |
嗯,不错,没啥问题,挺意外的。。 😛 应用程序里也出现了EasyConnect的图标,真不戳。
开开心心点击图标运行。。看来该来的还是要来的。。 直接不运行。。看了眼log,很好。 😀
应该是兼容性问题,毕竟Linux每次更新都伴随大量依赖升级,这种几年一更新的商业软件当然呵呵了。上深信服官方论坛逛了一圈儿,找到了支持的Linux版本信息。
居然连Ubuntu 18.04都没支持到,绝~当然,这是好多软件都共有的通病,大部分原因估摸着都是Electron版本太旧,但Electron的开发人员表示。。Emmmm
Luckily,上网冲浪一圈儿,发现其实可以降级pango等依赖解决问题。Log提示是Harfbuzz版本太老了,但其实是因为系统库的pango版本太新了。那就好说了,我们降级pango就好了。但是修改系统库可太恐怖了吧。。那我们就直接把相关的so库文件放到easyconnect同目录下即可。具体来说,涉及的so文件为:
libpangocairo-1.0.so.0
libpango-1.0.so.0
libpangoft2-1.0.so.0
这三个包可以到ubuntu packages官方网站上下载,也可以点右边的蓝奏云链接下载。蓝奏云下载链接 提取码:76yn
然后打开终端,切换到三个包的下载目录下,如下命令解压三个包。
1 2 3 |
dpkg -X libpango-1.0-0_1.42.4-7_amd64.deb ./ dpkg -X libpangocairo-1.0-0_1.42.4-7_amd64.deb ./ dpkg -X libpangoft2-1.0-0_1.42.4-7_amd64.deb ./ |
接着你就会发现下载目录里多出了个usr文件夹。输入如下命令切换到usr下的相应目录:
1 |
cd usr/lib/x86_64-linux-gnu |
用ls指令查看一下,发现里边有6个文件就对了。
然后我们将这些文件复制到EasyConnect目录下,快使用双截棍如下命令:
1 |
sudo cp * /usr/share/sangfor/EasyConnect |
我们再切换到EasyConnect目录下:
1 |
cd /usr/share/sangfor/EasyConnect |
接着输入以下命令:
1 |
ldd EasyConnect | grep pango |
看到如下回显,说明我们操作无误。
OK,然后我们打开EasyConnect试试~
打开了,嘿嘿嘿~ 😎 不过这UI界面。。严重怀疑偷懒和安卓端一起开发了……
输入服务器地址,连接,输入用户名和密码,登录,一通操作行云流水。
紧接着小图标也出来了~ 😆
接着。。emmm,当头一棒,闪退了,我×××××……
经研究发现,别问我怎么发现的,去看log。。在小图标闪烁示意正在连接的时候,在终端输入如下命令可解决问题:
1 |
sudo /bin/bash /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh |
但是每次连接的时候输入这么长一串指令,一是来不及,二是也记不住。。 😥 这就要用到Linux终端强大的alias了~
alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化.
用alias 短命令=’原命令 选项’
我们打开你用的shell的rc文件,比如我用的是zsh(oh-my-zsh,好看,强推),那就修改.zshrc文件;如果你用的是默认的bash,那就是.bashrc文件。
1 |
sudo nano ~/.zshrc |
在zshrc文件最后,写入如下内容:
1 |
alias vpn='sudo /bin/bash /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh' |
这里的vpn就是我定义的输入码,以后我输入vpn就会自动运行等号后单引号里的指令。因为后边的指令有sudo需要Super User权限,我们接下来再搞一下这个问题,毕竟输入密码也怪麻烦怪费时间的。然后保存,退出(我讲过nano的相关操作~)。
输入如下命令,更新rc:
1 |
source ~/.zshrc |
好了,接下来搞一下需要输入密码的问题。我们在终端输入以下命令,编辑/etc/sudoers这个文件。
1 |
sudo visudo |
在这个文件里,我们用井号注释掉 %admin ALL=(ALL) ALL 这行。接着在最下边写下如下一行指令:
1 |
siris ALL=NOPASSWD:/bin/bash /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh |
注意,开头要改成你的用户名字。这行命令的目的是让siris用户输入后边的指令的时候不需要Super User密码。修改完后的文件应该是这个样子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges # %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d siris ALL=NOPASSWD:/bin/bash /usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh |
保存,退出~
然后我们试一下,在连接过程中直接在终端输入vpn。成功连接了~
可以看到终端里我们输入vpn后,回显sslservice脚本运行,CSClient和svpnservice启动成功,然后右上角小图标也变成彩色静态的了。登一下OA试试~
嘻嘻,上来了~ 😆 (我也不知道这图打完马赛克之后为啥这么糊。。就那个意思,凑合看吧 😕 )
总结
从最开始拷贝旧版pango的so文件到EasyConnect目录下,就无奈满满。但谁叫客户端用的框架太旧呢,只能用这种方法了。这样也完美避开了downgrade系统的pango库,防止带来更多问题。最后,等待网站更新才是最终正道的光。希望各位开发者都能负点儿责任。。当然,钱要到位~
淦 麻烦死了