0

我正在尝试加载一个预先生成的 SSH 密钥,该密钥位于%USERPROFILE%\\.ssh\id_rsa.ppk.

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

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

4

2 回答 2

1

更换你的

  • %USERPROFILE%
  • %HOME%

变量与

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

因此。

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

要了解使用函数还可以做什么,请参阅如何使用 JMeter 函数系列文章。

于 2014-10-29T10:36:57.760 回答
0

只是%USERPROFILE%无法扩展(${HOME}扩展为%USERPROFILE%,随后无法扩展)。

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

我能想到的最好方法%USERPROFILE%是在启动时将它加载到一个属性中,然后在${HOME}

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

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

于 2014-10-29T00:29:38.953 回答