浏览器网页调用本地.exe程序Xshell,并以ssh协议登录

踏入社会第二年,第二个公司,第一个需求。

计划两天时间,做了一个星期。

第一次做项目,开发前端页面的功能。能完成这个任务,多亏了各种搜索引擎。

感谢信息技术、感谢网络的发展、感谢分享知识的每个人,让每个新手都能面向搜索引擎编程。

另一个感悟,理清问题的解决点,然后在网络上快速寻找到方法,这也是一种能力。


一、URL Protocol

URL Protocol 是Windows的功能:在注册表中设置自定义协议,即可在浏览器中将这个自定义协议作为一个链接。像迅雷、百度网盘这种软件,使用的就是这种方式,安装软件时在注册表中写入了自定义协议,在网页上点击相应请求链接时,浏览器便会调起本地绑定的程序。

二、本地程序 Xshell

通过网页打开并登录本地一个能使用ssh协议登录远程设备的程序。这种程序有secureCRT、putty、Xshell等。安装了secureCRT之后,没发现它在注册表里写入了它的URL Protocol。Xshell找到了,协议名为 Xshell.xsh

三、遇到难题

URL Protocol 在浏览器中作为一个链接,是可以在后面传值的。于是我想当然地认为,在Xshell的协议后添加对应的操作命令,比如这样的链接 “Xshell:ssh:// root:[email protected]:22” ,就可以在网页上调用,Xshell直接显示出登录远程后的界面了。

但是我太天真了,这是一个坑,困扰了我好久。我尝试过许多写法,无论如何只能打开Xshell,不能实现自动登录,常常弹出一些“没有Xshell.xsh协议”的提示。虽然URL Protocol 可以传值,但似乎在调用程序的同时,也把整个链接当做一个值传给程序,读错了我的意思。可能是我不知道传递的规则,因此,翻了不少文章,去Xshell官网,也没找到我想要的那个“Xshell 的URL Protocol 传值规则”的文章。

在运行窗口调用Xshell,后面带上参数,都能直接登录,为什么这个自定义协议就不行?随后自己瞎猜,使用这样的"Xshell.xsh:or ssh root:[email protected]" 写法,Xshell界面上竟然出现了输入Password的提示。但是输入了之后还是提示输入Password,还是不行,只能放弃。

留下了一个疑问,Xshell是否支持URL Protocol 直接打开并登录一个连接,是否有这样的功能?

四、中间程序

看来目前我只能做到打开Xshell,而不能让他处理后面的参数命令。网页调用Xshell并登录远程的想法无法实现。

而在找资料过程中,看到别人的使用场景,都是调用自己的程序。受到了启发,不如在 URL Protocol和Xshell之间再添加一个中间程序。URL Protocol 调用中间程序,中间程序处理链接内容,再调用CMD打开Xshell。

这个中间程序,就用Java写的。Java main函数有一个 String arg[ ] 数组。以前不在意,也没了解过。看了资料才发现,原来调用Java写的exe程序时,后面可以加的参数,就是用这个数组接收的。这样就不用猜到底有什么传值的规则了,自己随便定义,随便取值。

把接收到数组,转为字符串,根据自己加的标识字符取出命令并调用CMD执行。

这样,利用 URL Protocol ,调起中间程序,解析链接内容,生成并调用CMD命令,打开并登录远程设备的过程就完成了





开发过程中,心情是这样的

浏览器网页调用本地.exe程序Xshell,并以ssh协议登录_第1张图片

完成任务后,心情是这样的

浏览器网页调用本地.exe程序Xshell,并以ssh协议登录_第2张图片

你可能感兴趣的:(浏览器网页调用本地.exe程序Xshell,并以ssh协议登录)