zoukankan      html  css  js  c++  java
  • Web调用Linux客户端remmina运维

    相信你遇到过这样的场景,在浏览器网页中点击QQ图标咨询,就能唤起本机的装的qq或tim,下载百度网盘的资源的时候,点击链接浏览器会启动本地百度云进行下载。
     
    最近因为项目需要,也要实现类似的操作,不过需求是在界面版的Linux系统上,网上大多数的教程都是Windows版的内容,Linux的讲解比较少,下面我们就一起来看下,Web调用Linux客户端remmina实现ssh、sftp或vnc登录的过程,从编写执行到打包安装的一条龙服务是怎么实现的。
     
    let's start~
    先来大概了解下原理,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,进行实验

    有效果  

     还不错哦

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

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

     在*.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连接

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

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

    输入remmina -h命令可以看到,通过-c 参数可以连接该配置文件,
    输入命令,
    #格式为 remmina  -c  当前路径/*.remmina 
    remmina -c /root/.local/share/remmina/1561189454729.remmina
    

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

    此时,你可能已经想到了,将该命令放入到我们之前建的shell脚本myapp中,再通过浏览器触发,就可以实现web调用linux客户端运维登录了,可以先高兴好一小会儿了,毕竟革命已经完成了一大步了。
    高兴完后,我们将需要处理一些复杂的细节,
    后续的部分将在第二部分应用编写篇为你娓娓道来。
  • 相关阅读:
    图解JavaScript原型和原型链
    hash数组快速查找一个字符串中出现最多的字符,并统计出现的次数
    JS中数组和字符串的方法大全
    用js实现排列组合
    js中一个对象当做参数传递时候?
    用JavaScript按一定格式解析出URL 串中所有的参数
    从Object.definedProperty中看vue的双向数据的绑定
    Uncaught (in promise) TypeError:的错误
    vue之生命周期的一点总结
    原子性和原子性操作
  • 原文地址:https://www.cnblogs.com/mrwh/p/11663646.html
Copyright © 2011-2022 走看看