如何使用JMeter的SSH Command Sampler在Linux中创建或修改.sh文件
JMeter SSH Command Sampler创建/更新Linux .sh文件解决方案
问题原因
vi是交互式文本编辑器,需要终端TTY交互环境支持,而JMeter的SSH Command Sampler默认运行非交互式命令,不会分配交互终端,因此vi、top等需要人工交互的命令无法正常执行,仅ls、pwd等无交互的查询类命令可正常运行。
可行实现方案
方案1:echo/printf重定向(适合短内容脚本)
直接通过echo输出内容重定向写入文件,示例命令:
- 覆盖生成新文件:
echo -e '#!/bin/bash\necho "脚本测试内容"\n' > /绝对路径/目标脚本.sh - 追加内容到已有文件:
echo "追加的一行内容" >> /绝对路径/目标脚本.sh
注意:内容中若有特殊符号需提前转义,也可用单引号包裹内容避免变量被当前shell提前解析。
方案2:heredoc写入(适合多行复杂内容脚本)
用heredoc语法批量写入多行内容,无需手动处理换行符,示例命令:
cat > /绝对路径/目标脚本.sh << 'EOF' #!/bin/bash # 自定义脚本内容 echo "当前时间:$(date)" echo "脚本运行成功" EOF
注意:
EOF加单引号包裹可确保内容中的变量、特殊符号原样写入,不会被当前shell解析,适配绝大多数场景。
方案3:SFTP上传本地脚本(适合复杂脚本)
如果脚本内容较多、逻辑复杂,可直接使用JMeter的SSH SFTP Sampler,直接将本地提前编辑好的.sh文件上传到Linux服务器的目标路径,无需手动拼接写入命令,出错概率更低。
后续操作提示
- 脚本生成后如果需要执行,需先添加执行权限:
chmod +x /绝对路径/目标脚本.sh - 所有路径尽量写绝对路径,避免因工作目录不对导致的文件找不到问题。
内容的提问来源于stack exchange,提问作者Ralph
相关产品推荐
相关产品推荐

