什么是RCT

    RCT是Remote Control Toolkit的缩写,前身叫做SSH Tester,是基于orion-ssh2实现的一个工具集。Orion-ssh2是一个使用纯java语言实现SSH-2协议的开源工具包,便于使用Java语言与Linux系统交互。RCT对Orion-ssh2进行封装,实现了测试中常见的Linux操作,例如:系统信息获取,权限管理,脚本执行,文件的上传下载,网络丢包模拟等。因此,RCT可以轻松做到嵌入Java代码,然后只需要一句Java代码调用,就可以和远端的Linux Server完成一个交互动作。

RCT使用场景

当Java程序需要和Linux交互时,可以利用RCT实现该过程。例如:测试人员要做这样一个测试。当应用端发送了100条消息时,希望服务器上应用能够出现一次异常退出。当发送端发送第200条消息时,服务器上的应用恢复正常。在这个例子中,需要和Linux服务器做2次交互才能是程序自动化运行。这里当然不排除其他纯Java的SSH2协议工具,但是使用RCT,会让代码量大大减少,代码的易读性也会大大提高。

如何获得RCT

可以把RCT的依赖加入POM.xml中。当前最新的版本是0.1.0

<dependency>
    <groupId>com.taobao.test</groupId>
    <artifactId>sshtester</artifactId>
    <version>0.1.0 </version>
</dependency>

RCT的一个简单例子

下面的例子中,展示了使用RCT先初始化客户端,然后在IP为192.168.0.1的服务器上执行删除名字叫做”somefile”文件的过程:
//初始化一个SSH客户端 SSHClient adminClient = new                    SSHClient("192.168.0.1","username","password");//直接调用API完成删除操作 adminClient.removeFile(~/somefile);

    也可以自定义命令来删除这个文件,下面代码使用了RCT的另外一种客户端初始化方式://初始化一个SSH unit单元,其中包括IP地址,用户名和密码 SSHUnit sshUnit = new SSHUnit();
sshUnit.setIp("192.168.0.1");
sshUnit.setUserName("username");
sshUnit.setPassword("password");//使用定义的SSH单元初始化一个SSH客户端 SSHClient adminClient = new SSHClient(sshUnit);//初始化一个SSH命令集合 SSHCommand command = new SSHCommand();//删除一个文件 command.addCommand("rm ~/somefile");//也可以继续追加命令,比如利用sudo权限删除一个文件 command.addCommand("sudo rm /somefile ");//执行命令 adminClient.excuteCommandWithPTY(command);

注意:一个命令集合中添加的命令会逐条串行执行。

如何初始化RCT的客户端

初始化RCT客户端有以下两种方法:
1 使用明文密码直接初始化。

SSHUnit sshUnit = new SSHUnit();
sshUnit.setIp("192.168.0.1");
sshUnit.setUserName("username");
sshUnit.setPassword("password");

SSHClient adminClient = new SSHClient(sshUnit);

2 使用加密后的密码初始化

SSHEncryptUnit sshEncryptUnit = new SSHEncryptUnit();
sshEncryptUnit.setIp("192.168.0.1");
sshEncryptUnit.setUserName("username");
sshEncryptUnit.setPassword("q0Z3wojECfQjjtiR63/W9FQwF");

SSHClient adminClient = new SSHClient(sshEncryptUnit);

说明:由于安全性原因,建议使用加密的密码来初始化。
可以通过调用方法
com.taobao.test.common.sshtester.client.SSHClient.encryptPassword(String),来获取加密后的字符串

OK,现在已经搞定了客户端的初始化,在下一章里,我们就和主人公小A一起使用RCT,来化解测试过程中遇到的难题。

欢迎关注Java与Linux交互的利器——RTC系列文章(二)