我正在尝试加载一个预生成的SSH密钥,该密钥位于%USERPROFILE%\\.ssh\id_rsa.ppk中。
我已经设置了用户定义的变量:
PAGEANT: "C:\Path_to_pageant\Pageant.exe"
HOME: %USERPROFILE%
ID_RSA: ${HOME}\.ssh\id_rsa_jmeter.ppkOS进程采样器配置为:
Command: ${PAGEANT}
Value: "${ID_RSA}"运行后,它显示:
Executing: "C:\Path_to_pageant\Pageant.exe" "${HOME}\.ssh\id_rsa_jmeter.ppk"并且Pageant警告说它找不到密钥,没有加载任何键。
如果我将ID_RSA更改为%USERPROFILE%\.ssh\id_rsa_jmeter.ppk:
Executing: "C:\Path_to_pageant\Pageant.exe" "%USERPROFILE%\.ssh\id_rsa_jmeter.ppk"并且Pageant警告说它找不到密钥,没有加载任何键。
如果我将该命令复制并粘贴到命令提示符中,它将向Pageant添加键。看来${HOME}和%USERPROFILE%都没有被扩展。
注意:完全硬编码路径将允许JMeter导入密钥.
发布于 2014-10-29 10:36:57
替换你的
%USERPROFILE%和%HOME%变量与
${__BeanShell(System.getenv("USERPROFILE"),)}和${__BeanShell(System.getenv("HOME"),)}相应地。
上述方法结合了System.getenv() Java类方法调用和JMeter的贝贝函数。
要了解使用函数还可以做什么,请参阅如何使用JMeter函数 post系列。
发布于 2014-10-29 00:29:38
只有%USERPROFILE%未能展开(${HOME}扩展为%USERPROFILE%,后者随后无法展开)。
这是因为扩展是由命令提示符shell完成的,而不是由OS进程采样器完成的。
我认为获得%USERPROFILE%的最好方法是在启动时将其加载到属性中,然后在${HOME}中使用该属性。
将-DUSERPROFILE=%USERPROFILE%添加到JMeter启动命令行,然后在脚本中使用${__P{USERPROFILE}}。
另一种选择是更改命令,使其运行"cmd.exe /C \path_to_pageant\pageant.exe"。这将在命令提示符调用Pageant之前调用命令提示符来展开%USERPROFILE%。
https://stackoverflow.com/questions/26612540
复制相似问题