【问题标题】:Running SSH commands and shell scripts from Jmeter从 Jmeter 运行 SSH 命令和 shell 脚本
【发布时间】:2015-12-15 14:03:32
【问题描述】:

有谁知道如何通过 Jmeter 的 SSH 执行一系列命令。我使用了http://www.technix.in/execute-linux-command-shell-script-apache-jmeter/#comment-8456 中提到的 SSH 采样器,并且能够使用我自己的用户登录到远程服务器。但是,我想做更多的步骤。不知道怎么办

  1. 向其他用户发送 sudo –‘sudo su –report’
  2. 切换到某个目录
  3. 运行一些已经存在的 shell 脚本
  4. Shell 脚本将生成一些输出文件。我需要将输出文件从那里 SFTP 到本地 Jmeter 目录

  5. 编写一些测试来验证输出文件。这可以稍后完成,但如何执行前 4 个步骤。

我面临的主要问题是我无法理解如何在 SSH Sampler 中运行一系列命令。我尝试使用;它奏效了。但是我无法执行 Sudo 并从那里运行 shell 脚本。

任何帮助将不胜感激。

干杯! 维韦克

【问题讨论】:

    标签: ssh jmeter jmeter-plugins


    【解决方案1】:

    根据su command manual

      -c, --command=command
              Pass command to the shell with the -c option.
    

    所以您可以用su 替换sudo 并执行类似的操作:

    su -c "cd /some/directory && ./run_some_script" -s /bin/bash report
    

    有关详细信息,请参阅How to Run External Commands and Programs Locally and Remotely from JMeter 指南。

    【讨论】:

    • 谢谢@dmitri 但是“sudo su - report -c pwd”仍然不起作用。我向 Jmeter 添加了一个 SSH 采样器,然后使用主机名、用户名和密码连接到远程 unix 机器。这样就很好连接了。但是,当我使用 Sudo 命令时,它不起作用。下面是我的 Jmeter 计划的样子:
    • 这是我在 Jmeter 的 SSH 采样器中配置的:主机名 - Unix_Server 端口 - 22 用户 - VivekM 密码 - xxxxx 执行命令 - sudo su - report -c pwd 在查看结果树中我可以看到它连接到我的用户但 Sudo 仍然不起作用的服务器。然后我写了一个java程序来做类似的事情。但是在 Java 中它也可以连接,但是在运行 sudo 时会出现以下错误: Connected sudo: sorry, you must have a tty to run sudo exit-status: 1 DONE
    • 我有没有在任何地方提到过 sudo?
    • 否 @Dmitri T 但是从 UNIX 框中我从我的用户“a.vmalho”登录以通过以下方式报告用户。当我使用以下命令时,它不会提示我输入密码,然后我可以使用报告用户运行 shell 脚本。我想在 Jmeter 中模拟相同的功能。 SSH Sampler 是否可以做到这一点,或者如果 Jmeter 无法做到这一点,那么我将寻找其他工具。提前谢谢了!! [a.vmalho@d-breport-app01 ~]$ sudo su -report -bash-4.1$ id uid=5035(report) gid=5035(report) groups=5035(report) context=unconfined_u:unconfined_r:unconfined_t:s0 -s0:c0.c1023 -bash-4.1$
    • 我已经解决了这个问题并且能够通过 SSH 连接到 UNIX 机器,但是当我运行 shell 脚本时,它返回的返回码为 127 ($?)。你知道可能是什么原因。相同的脚本从路径运行良好。这是我的 Jmeter 命令 cd nexnet/bin/;pwd;ls -lrt;sh nexnet.sh;echo $?我试图搜索 127,它显示“找不到命令”或“非法命令”。但是,shell 脚本是它们在路径上的 UNIX 框,当我直接登录到框时,我可以运行它。如果您有任何想法,请帮忙。