在MeterSphere中如何实现SSH登录服务器
在测试过程中很多时候会遇到,需要通过SSH协议登录到服务器上获取某些配置文件或者日志文件,或者启动其他服务/脚本执行等等。MeterSphere测试平台可以提供多种方式实现此功能。下面介绍使用MeterSphere测试平台实现此要求相关操作和注意事项。
1、MeterSphere平台的SSH插件
使用平台提供的SSH插件能简单、快捷地实现上述需求,并且对测试人员代码要求和用例维护成本都相对较低。
1.1 获取插件
此插件可以到https://github.com/metersphere 下载,如果这里没有找到,可以到MeterSphere厂商索要插件,方式:https://fit2cloud.com/ 打电话或者扫码厂商的支持二维码,进入厂商的交流群索要即可。
1.2 安装插件
路径:MeterSphere的系统设置>>系统>>插件管理》》上传插件
在上传插件时,类型需要选择为【接口测试】
注意事项
在上传插件后,建议重新启动【system-setting】服务,否则插件使用时会有异常。
1.3 通过插件实现SSH登录服务器及相关操作
1、插件上传后,我们新建一个场景,专门测试此功能,路径如下:选择【接口测试>>接口自动化>>创建场景】
2、进入场景详情页面,选择右下角的加号【+】,在弹出的菜单中选择【模拟请求】,左侧出现该节点相关服务器登录信息以及具体的操作命令即可
点击【调试】或者【执行】即可完成。
注意事项
2、使用MeterSphere前后置脚本实现SSH服务器及操作
MeterSphere V2+版的前后置脚本是支持多语言的:beanshell、groovy、javascript、python。
现在使用beanshell脚本的方式实现SSH登录服务器及相关操作。
2.1 beanshell代码:实现SSH登录并执行ls命令
下面代码样例是beanshell脚本实现SSH登录服务器,并且执行ls命令。
import com.jcraft.jsch.*;
try {
JSch jsch = new JSch();
// 设置SSH连接的用户名、主机和端口
String username = "用户名";
String host = "主机地址";
int port = 22;
// 创建SSH会话
Session session = jsch.getSession(username, host, port);
// 设置SSH会话的密码
String password = "登录密码";
session.setPassword(password);
// 禁用SSH主机密钥检查
session.setConfig("StrictHostKeyChecking", "no");
// 建立SSH连接
session.connect();
// 打开SSH通道
Channel channel = session.openChannel("exec");
// 设置执行的命令
String command = "ls";
// 在SSH通道中执行命令
((ChannelExec) channel).setCommand(command);
// 获取命令执行的输出流
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
// 连接SSH通道
channel.connect();
// 读取命令执行的输出
InputStream in = channel.getInputStream();
byte[] buffer = new byte[1024];
while (true) {
while (in.available() > 0) {
int bytesRead = in.read(buffer, 0, 1024);
if (bytesRead < 0) break;
System.out.print(new String(buffer, 0, bytesRead));
String ss = new String(buffer, 0, bytesRead);
}
if (channel.isClosed()) {
if (in.available() > 0) continue;
System.out.println("Exit status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
ee.printStackTrace();
// 在metersphere执行控制台直接打印
log.info("异常");
}
}
// 关闭SSH通道和会话
channel.disconnect();
session.disconnect();
} catch (Exception e) {
e.printStackTrace();
// 在metersphere执行控制台直接打印
log.info("失败");
}
2.2在MeterSphere“代码片段”里测试
注意事项
需要下载【JSch】包,并且把该包上传到MeterSphere平台。
上传jar的路径:【项目设置>>文件管理】
选择【添加文件】上传JSch包
点击jar包后面的【眼睛】图标,设置【开启】jar包用于接口测试
经验:在MeterSphere也尝试了Python脚本去实现SSH登录,但是没有成功,一直有异常,脚本在本地执行都没有问题。大家如果在MeterSphere用Python脚本实现的,请多多指教。