踏入社会第二年,第二个公司,第一个需求。
计划两天时间,做了一个星期。
第一次做项目,开发前端页面的功能。能完成这个任务,多亏了各种搜索引擎。
感谢信息技术、感谢网络的发展、感谢分享知识的每个人,让每个新手都能面向搜索引擎编程。
另一个感悟,理清问题的解决点,然后在网络上快速寻找到方法,这也是一种能力。
一、URL Protocol
URL Protocol 是Windows的功能:在注册表中设置自定义协议,即可在浏览器中将这个自定义协议作为一个链接。像迅雷、百度网盘这种软件,使用的就是这种方式,安装软件时在注册表中写入了自定义协议,在网页上点击相应请求链接时,浏览器便会调起本地绑定的程序。
二、本地程序 Xshell
通过网页打开并登录本地一个能使用ssh协议登录远程设备的程序。这种程序有secureCRT、putty、Xshell等。安装了secureCRT之后,没发现它在注册表里写入了它的URL Protocol。Xshell找到了,协议名为 Xshell.xsh
三、遇到难题
URL Protocol 在浏览器中作为一个链接,是可以在后面传值的。于是我想当然地认为,在Xshell的协议后添加对应的操作命令,比如这样的链接 “Xshell:ssh:// root:password@127.0.0.1:22” ,就可以在网页上调用,Xshell直接显示出登录远程后的界面了。
但是我太天真了,这是一个坑,困扰了我好久。我尝试过许多写法,无论如何只能打开Xshell,不能实现自动登录,常常弹出一些“没有Xshell.xsh协议”的提示。虽然URL Protocol 可以传值,但似乎在调用程序的同时,也把整个链接当做一个值传给程序,读错了我的意思。可能是我不知道传递的规则,因此,翻了不少文章,去Xshell官网,也没找到我想要的那个“Xshell 的URL Protocol 传值规则”的文章。
在运行窗口调用Xshell,后面带上参数,都能直接登录,为什么这个自定义协议就不行?随后自己瞎猜,使用这样的"Xshell.xsh:or ssh root:passwd@192.168.10.100" 写法,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命令,打开并登录远程设备的过程就完成了
开发过程中,心情是这样的
完成任务后,心情是这样的
网友评论