如何从Apache Jmeter执行Linux命令或Shell脚本



如何执行apache jmeter

的Linux命令或Shell脚本

有人知道如何执行Jmeter的Linux命令吗?我在线发现了此链接http://www.technix.in/execute-linux-command-shell-scrimp-script-apache-jmeter/,我尝试了这些步骤,但行不通。我看不到SSH采样器。如果有人在Jmeter的运行Shell脚本方面取得了成功,请分享。预先感谢

如果您需要在远程系统上执行命令,请执行以下步骤:

  1. 下载JSCH.JAR-提供从Java语言提供SSH和SCP协议操作的库,然后将其放在Jmeter安装的/lib文件夹
  2. 下载groovy -all.jar- jmeter的groovy脚本引擎支持,然后将其放到/lib文件夹
  3. 重新启动jmeter以挑选图书馆
  4. 将JSR223采样器添加到您的测试计划中,然后从"语言"下拉下选择" Groovy"
  5. 遵循exec.java JSCH教程的示例代码以实现您自己的逻辑。

您也可以参考下面的摘要,该摘要在远程 *NIX系统上执行ls命令并返回命令执行结果。确保您提供有效的usernamehostnamepassword,以便采样器可以工作

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());

请参阅Beanshell vs JSR223 vs Java Jmeter脚本:您一直在等待的性能!有关Groovy Scripting Engine安装和最佳脚本练习的详细信息。

可以查看为此完成的OS进程采样器,并在核心中使用:

  • http://jmeter.apache.org/usermanual/component_reference.html#os_process_sampler

您可以使用jmeter内部的beanshell脚本,然后您可以拥有这样的东西:

    String command="your command here";
    StringBuffer output = new StringBuffer();
    Process p;
    try {
        p = Runtime.getRuntime().exec(command);
        p.waitFor();
        BufferedReader reader = 
                        new BufferedReader(new InputStreamReader(p.getInputStream()));
                    String line = "";           
        while ((line = reader.readLine())!= null) {
            output.append(line + "n");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    log.inf(output.toString());

在这里看关于执行jar-file的答案。但是其他OS命令的想法相同。

  1. 使用os_process_sampler
  2. 填充字段命令带有OS Shell,例如/bin/bash或Analogue。
  3. -c
  4. 设置第一个参数
  5. 设置下一个参数>您命令
  6. 采样器准备执行:)

最新更新