如果需要在远程系统上执行命令,请执行以下步骤:
下载JSch.jar-该库从Java语言提供SSH和SCP协议操作,并将其放置在JMeter安装的/ lib文件夹中
下载groovy- all.jar-对Jmeter的Groovy脚本引擎支持,并将其也放到/ lib文件夹中
重新启动JMeter以拾取库
将JSR223采样器添加到您的测试计划中,然后从“语言”下拉列表中选择“常规”
请遵循Exec.java Jsch教程中的示例代码,以实现自己的逻辑。
您也可以参考下面的片段,该片段在远程* nix系统上执行ls命令并返回命令执行结果。 确保您提供有效的username , hostname和password ,以便采样器正常工作
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
JSch jSch = new JSch();
Session session = jSch.getSession("username", "hostname", 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("exec");
String command = "ls";
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
StringBuilder rv = new StringBuilder();
rv.append("New system date: ");
byte[] tmp = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(tmp, 0, 1024);
if (i < 0) break;
rv.append(new String(tmp, 0, i));
}
if (channel.isClosed()) {
break;
}
try {
Thread.sleep(100);
} catch (Exception ee) {
ee.printStackTrace();
}
}
in.close();
channel.disconnect();
session.disconnect();
SampleResult.setResponseData(rv.toString().getBytes());