bash - JMeter Beanshell 断言:如何保存 Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l") 的值?
问题描述
我的 shell 命令ifconfig | grep \"${IpAddress}\" | wc -l
返回0
或1
在终端内运行时返回。我需要使用 JMeter 做同样的事情并相应地断言(0
失败,1
通过)。但是当我这样做时:
Runtime.getRuntime().exec("ifconfig | grep \"${IpAddress}\" | wc -l");
我什么也得不到!关于如何保存(并稍后检索)此命令输出的值的任何想法?
解决方案
您基本上是通过管道执行 3 个命令:
ifconfig
grep
wc
它只能在Linux SHELL内工作,所以你需要修改你的命令看起来像:
/bin/bash -c ifconfig | grep \"${IpAddress}\" | wc -l
您指的是 JMeter 变量,
${IpAddress}
这不是很好的做法,因为它们可以解决导致编译失败的问题。考虑使用JMeterVariables类实例vars
的简写,而不是像vars.get("IpAddress")
您使用的不是最好的测试元素,从 JMeter 3.1 开始,建议对任何形式的脚本使用 JSR223 Elements 和 Groovy 语言。
假设以上所有,我建议使用JSR223 Assertion和如下代码:
String response = org.apache.commons.lang3.StringUtils.normalizeSpace(['/bin/bash', '-c', 'ifconfig | grep \"' + vars.get('IpAddress') + '\" | wc -l'].execute().text)
if (response.equals("1")) {
//do what you need here
}
推荐阅读
- c++ - 如何在将模板转换为任意类型时避免编译器错误
- javascript - 使用 tfjs-node 在环回中调用方法时出现错误 500
- groovy - Adaptavist Script Runner (Groovy) - 点击创建子任务
- java - Java 中的缓冲读取器、行数、拆分、解析
- c# - LINQ 子选择
- sql - 解析远程 PROC SQL (SAS) 中的宏引用
- ruby-on-rails - 非常缓慢的迁移
- angular - 使用带有 typescript 联合类型 CustomObject 的 instanceof | 自定义对象[]
- javascript - 如何在 Safari 浏览器中关闭自动完成功能
- routing - HAProxy - 无法使用路径 ACL 重定向具有相似 URL 的请求