在日常开发或私下的学习中,经常接触到服务器的操作问题,在不同的设备之间进行互相的通讯,与远程操作是一种不同的体验,现在就来带大家看一下有哪些还不错的连接工具吧!
目录
ssh远程操作
ssh是什么
finalShell
TCP远程操作
TCP是什么
dialogue
总结
ssh是一种远程连接的协议,基于TCP实现,该协议能够使得两台主机实现免密登录,需要进行公钥和私钥的配置,是当下设备远程操作的主要方式,通过终端中的ssh命令就可以启动与已安装ssh的设备之间的连接,例如下面的命令,代表以liming用户身份登录到192.168.1.15这台主机的命令行中。
C:\Users\zhao>ssh [email protected]
而针对ssh的命令行方式,有的小伙伴是不太舒服的,毕竟一个黑黑的窗口,能有多少人会喜欢呢?因此便有了一些图形化终端工具。
finalShell是一款能够通过密码和ssh密钥对进行远程登录和命令执行的图形化软件,采用Java实现的一款软件,基于ssh实现的客户端连接工具,同时提供了服务器状态的实时查询。
finalShell官网地址:http://www.hostbuf.com/t/988.html
不过由于finalShell在平时只用于连接,所以很多功能还没有发掘到,finalShell的强大并不是只有这么一点,各位可以亲自试一下
TCP是一种比较底层也比较常用的网络协议,这种协议可以保证通信两端的设备之间的通信质量稳定,传输安全性高,同时也是当下web中http协议的底层,在TCP的通信中,即保证了安全,也实现了生态火热,在各类编程语言中都有此协议的库,那么接下来将要介绍一款基于TCP实现的远程操作工具——dialogue。
dialogue译名为“对话”,简单的理解为两台计算机之间的对话,是一个服务,dialogue与其说是一款服务程序,不如说其更像一个库,它提供了一个完整的Java API以及服务程序,同时是开源框架,在该框架中有主控和被控两种会话,即代表了主动连接和被动连接两个设备,基于dialogue的服务启动之后的两台设备,可以互相进行命令行通信与调用。
dailogue开源地址:https://github.com/BeardedManZhao/Dialogue
dialogue提供了两个开发好的客户端,分别是PC端和安卓移动端两种,在已发布版本就可以找到对应的apk和zip包,接下来就为大家展示下远程操作的调用。
首先在我们的设备上下载好了zip包,并对其进行解压,解压后开源看到有两个脚本,这两个脚本文件分别是启动主控与被控服务的脚本文件,这两个文件同样是调用目录中的jar包,到此dialogue服务安装完毕。
接下来开始启动被控服务,被控服务启动之后,当前的设备就可以直接被任何安装了dailogue服务的设备通过IP所连接了。
接下来开始准备一台新设备,一样安装好dialogue服务,然后启动主控,开始进行远程连接,并执行一些操作。
可以看到这些命令执行成功了,那么如何验证我们是否使用远程设备执行的命令呢?很简单,只需要查看下被控日志即可,在被控日志中会打印出执行的命令以及执行时的情况。
当然,既然是一个开源的服务,那么一定会有它的开发方式,它提供了JavaAPI,是通过各类会话对象进行的这类服务操作,接下来就是通过Java去连接被控的示例。
public class Test {
public static void main(String[] args) {
// 获取到主控会话对象
MasterSession instance = MasterSession.getInstance(Session.MASTER_FILE_SESSION);
// 启动会话 指定被控IP与指令处理端口,被控端口默认是10001
instance.start("192.168.0.101", "10003");
if (instance.isRunning()) {
// 执行cmd命令,并获取到执行的结果数据
String s1 = instance.runCommand("cmd /c dir");
System.out.println(s1);
System.out.println();
// 运行一个python脚本
String s2 = instance.runCommand("python test.py");
System.out.println(s2);
System.out.println();
// 执行 cmd 命令查看python脚本的代码
String s3 = instance.runCommand("cmd /c type test.py");
System.out.println(s3);
System.out.println();
// 执行 look 命令,使用文件通道 查看python脚本的代码
String s4 = instance.runCommand("look ./test.py");
System.out.println(s4);
// 执行 get 命令,获取到被控设备的文件数据 这里的进度显示可以在配置文件中 file.progress.event 属性进行设置
String s5 = instance.runCommand("get ./EB1.ppt ./EB2.ppt");
System.out.println(s5);
}
// 终止当前会话
instance.stop();
}
}