39

Web调用Linux客户端remmina运维

 4 years ago
source link: https://www.tuicool.com/articles/emMzyen
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载。

最近因为项目需要,也要实现类似的操作,不过需求是在界面版的Linux系统上,网上大多数的教程都是Windows版的内容,Linux的讲解比较少,下面我们就一起来看下,Web调用Linux客户端remmina实现ssh、sftp或vnc登录的过程,从编写执行到打包安装的一条龙服务是怎么实现的。

let's start~

aQRbaeJ.png!web

先来大概了解下原理,web界面如何通过浏览器隔山打牛调用到本地的remmina客户端,而且不存在浏览器的兼容问题 ,是怎么实现的。

在浏览器的地址栏上, 除了我们常见的协议有http, https,ftp外,我们还可以使用 自定义协议即URL protocal,通过在安装应用程序时,向系统注册私有自定义协议,然后就可以在网页端通过url的方式打开本地应用程序。在网页文本中它的常见格式为:

1 <a href="protocolName://数据参数字符串" ></a>

例如:

<a href="thunder://QUFmdHA6Ly95Z2R5ODp5Z2R5OEB5ZzQ1Lm..."/>打开迅雷</a>
<a href="baiduyunguanjia://evoked-download/?bddxxxx">打开百度云盘</a>
<a href="tencent://AddContact/?uin=1079190033xxx">打开腾讯QQ</a>

可以直接在浏览器地址栏中输入tencent://123 或者baiduyunguanjia://123,进行实验

有效果

qa6nEzn.png!web

还不错哦

ZBFVf27.png!web

如图发现可以唤起一个打开应用程序的弹窗时,说明你的windows系统中就已经注册好该协议了,win+R输入regedit打开系统注册表,在计算机\HKEY_CLASSES_ROOT\路径下可以找到对应的协议名, 协议名文件夹下指示了该协议启动的应用程序的路径,URL Protocol协议就在那里:

Mfi2YjM.png!web

而Linux系统是怎样的呢?

linux系统是创建一个Desktop Entry(启动器配置文件),该文件以".desktop"为后缀名的桌面快捷方式,这些 Desktop Entry 文件通常被存放在 /usr/share/applications/目录下,

ryiaQbf.png!web

在*.desktop文件里面定义了应用程序的路径后,然后再注册到 /share/applications/mimeapps.list中,在浏览器里面输入相应的Desktop Entry 文件的名字就可以启动相对应的应用程序啦。

具体实现步骤 如下:

1.cd /usr/share/applications/ 进入到应用目录,创建 myapp.desktop文件

#vi myapp.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application 
Terminal=false #软件打开时是否启动终端
Exec=/usr/bin/myapp %u  #应用程序执行路径修改 %u为接收参数
Name=运维助手 #快捷方式显示的名称
Comment=运维助手    
Icon=     #应用程序显示的图标路径
Categories=Application;#应用程序在菜单中显示的类别
MimeType=x-scheme-handler/myapp; #应用类型

2.执行命令:

update-desktop-database

3.注册自定义协议到mimeapps.list:

xdg-mime default myapp.desktop x-scheme-handler/myapp

4.编写myapp的脚本给执行权限

#!/bin/bash
touch 1.txt

以上完成了一半,接下来就是对remmina的操作

1.在Linux桌面上打开remmina,保存一个ssh连接

rIJV7j3.png!web

添加完成后可以看到保存后生成的配置文件存放路径

Uzy2Avj.png!web

2.打开终端到该路径下,

Q7rMRzY.png!web

输入remmina -h命令可以看到,通过-c 参数可以连接该配置文件,

输入命令,

#格式为 remmina  -c  当前路径/*.remmina 
remmina -c /root/.local/share/remmina/1561189454729.remmina

然后就可以连接到远程服务器了

jyi63qE.png!web

此时,你可能已经想到了,将该命令放入到我们之前建的shell脚本myapp中,再通过浏览器触发,就可以实现web调用linux客户端运维登录了,可以先高兴好一小会儿了,毕竟革命已经完成了一大步了。

高兴完后,我们将需要处理一些复杂的细节,

后续的部分将在第二部分应用编写篇为你娓娓道来。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK