Bash 在jmeter中运行sh脚本

Bash 在jmeter中运行sh脚本,bash,jmeter,Bash,Jmeter,对于负载测试,在jmeter中运行测试之前,我想随机化测试值。为此,我想使用以下bash脚本: #! /bin/bash cat data.dsv | shuf > randomdata.dsv 这应该在jmeter中执行。我尝试将BeanShell采样器与此命令一起使用(我使用此命令总是找到文件的正确paht,无论我想在哪台机器上执行它): 但我总是收到这样的错误信息: ERROR - jmeter.util.BeanShellInterpreter: Error invoking b

对于负载测试,在jmeter中运行测试之前,我想随机化测试值。为此,我想使用以下bash脚本:

#! /bin/bash
cat data.dsv | shuf > randomdata.dsv
这应该在jmeter中执行。我尝试将BeanShell采样器与此命令一起使用(我使用此命令总是找到文件的正确paht,无论我想在哪台机器上执行它):

但我总是收到这样的错误信息:

ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: ``execute(/home/user/git/path/'' Encountered "( /" at line 1, column 8.
有什么想法可以做,或者我还没有找到一些最佳实践吗?

我建议改为使用,它应该更容易使用,比如:

关于Beanshell方法,不需要在Beanshell采样器中使用Beanshell函数,此外,每次调用该函数时都会创建一个Beanshell解释器实例,从而导致性能开销。您只需将代码放入采样器的“脚本”区域即可


有关JMeter中Beanshell脚本的信息,请参阅指南

这是
execute(/home/user/git/path
用户shell初始化脚本中的一个片段还是偶然发生的?感谢您的建议,但有这些链接(我也尝试了OS Process Sampler)很遗憾,我无法完成我想要的。我真的不知道为什么这种情况下似乎没有简单的例子。我在这里尝试了这么奇怪的事情吗?您可能需要在操作系统进程采样器中提供shell解释器的完整路径和脚本的完整路径,如
/bin/bash/opt/jmeter/bin/random.sh
,它应该可以帮您解决问题u、 请让我知道我是否应该用OS Process Sampler screenshot更新答案谢谢大家的关注!如果您能给我看一张OS Process Sampler的屏幕截图,我将非常感激。我已经用屏幕截图更新了我的答案,请根据需要随意替换工作目录和参数
ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   In file: inline evaluation of: ``execute(/home/user/git/path/'' Encountered "( /" at line 1, column 8.
import org.apache.jmeter.services.FileServer;

StringBuilder command = new StringBuilder();
FileServer fileServer = FileServer.getFileServer();
command.append(fileServer.getBaseDir());
command.append(System.getProperty("file.separator"));
command.append("random.sh");
Process process = Runtime.getRuntime().exec(command.toString());
int returnValue = process.waitFor();
return String.valueOf(returnValue);