如何使用JMeter在Pageant中加载SSH密钥

时间:2014-10-28 15:43:42

标签: windows jmeter pageant

我尝试加载位于%USERPROFILE%\\.ssh\id_rsa.ppk的预先生成的SSH密钥。

我设置了用户定义的变量:

PAGEANT: "C:\Path_to_pageant\Pageant.exe"
   HOME: %USERPROFILE%
 ID_RSA: ${HOME}\.ssh\id_rsa_jmeter.ppk

OS Process Sampler配置为:

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导入密钥。

2 个答案:

答案 0 :(得分:1)

替换

  • %USERPROFILE%
  • %HOME%

变量

  • ${__BeanShell(System.getenv("USERPROFILE"),)}
  • ${__BeanShell(System.getenv("HOME"),)}

相应。

上述方法使用System.getenv() Java SDK类方法调用和JMeter的__Beanshell函数的组合。

要了解使用函数可以做些什么,请参阅How to Use JMeter Functions帖子系列。

答案 1 :(得分:0)

只有%USERPROFILE%无法展开(${HOME}扩展为%USERPROFILE%,后来无法展开。

这是因为扩展是由命令提示符shell完成的,而不是由OS进程采样器完成的。

我认为获得%USERPROFILE%的最佳方法是在启动时将其加载到属性中,然后使用${HOME}中的属性

-DUSERPROFILE=%USERPROFILE%添加到JMeter启动命令行,然后在脚本中使用${__P{USERPROFILE}}

另一种方法是更改​​命令,使其运行"cmd.exe /C \path_to_pageant\pageant.exe"。这将在命令提示符调用Pageant。之前调用命令提示符展开%USERPROFILE%