[英]How can I use JMeter to load SSH keys in 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导入密钥。
更换您的
%USERPROFILE%
和 %HOME%
变量与
${__BeanShell(System.getenv("USERPROFILE"),)}
和 ${__BeanShell(System.getenv("HOME"),)}
相应地。
上面的方法结合使用System.getenv() Java SDK类方法调用和JMeter的__Beanshell函数。
要了解使用函数可以完成的其他操作,请参阅如何使用JMeter函数帖子系列。
只有%USERPROFILE%
无法扩展( ${HOME}
扩展为%USERPROFILE%
,随后扩展失败)。
这是因为扩展是由命令提示符外壳完成的,而不是由OS进程采样器完成的。
我认为获取%USERPROFILE%
最佳方法是在启动时将其加载到属性中,然后在${HOME}
使用该属性
将-DUSERPROFILE=%USERPROFILE%
添加到JMeter启动命令行,然后在脚本中使用${__P{USERPROFILE}}
。
另一种选择是更改命令,使其运行"cmd.exe /C \\path_to_pageant\\pageant.exe"
。 在命令提示符调用Pageant之前,这将调用命令提示符以展开%USERPROFILE%
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.