0

有没有人有一个工作示例项目,您使用 Citrus 框架充当 SSH 客户端以连接到真实服务器以发送命令并验证它返回的内容?

我尝试按照文档进行操作,我的项目构建并尝试连接,但挂断了似乎是用户提示询问要连接的用户的内容。我发现了一个不同的 SO 主题,看起来与我正在经历的完全一样,但我不想修改或重载框架的类,因为我正在开发它以移交给不同的团队并希望坚持核心未来兼容性的类。

这是类似于我的问题的主题:Skipping Kerberos authentication prompts with JSch

我认为如果 Citrus 只是公开一个配置参数以在需要时打开/关闭此选项,它会起作用。

session.setConfig(
"PreferredAuthentications", 
"publickey,keyboard-interactive,password");

一个工作示例将非常有益。

4

1 回答 1

1

这是 Citrus 中 SSH 客户端的工作示例2.7.2

我使用 SSH 密钥身份验证和密码身份验证对其进行了测试。该示例显示了 SSH 密钥版本。对于仅密码身份验证,您需要用private-key-pathprivate-key-password替换password="some_password"

柑橘上下文.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:citrus-ssh="http://www.citrusframework.org/schema/ssh/config"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://www.citrusframework.org/schema/ssh/config
       http://www.citrusframework.org/schema/ssh/config/citrus-ssh-config.xsd">

    <context:property-placeholder location="classpath:citrus.properties"/>

    <citrus-ssh:client id="sshClient"
                       user="${ssh.user}"
                       host="${ssh.host}"
                       port="22"
                       private-key-path="${ssh.private.key.path}"
                       private-key-password="${ssh.private.key.password}"/>

</beans>

柑橘属性

ssh.user=some_user
ssh.host=some.host
ssh.private.key.path=/home/some_user/.ssh/id_rsa
ssh.private.key.password=secret_password

SSHTest_IT.xml

<?xml version="1.0" encoding="UTF-8"?>
<spring:beans xmlns="http://www.citrusframework.org/schema/testcase"
              xmlns:spring="http://www.springframework.org/schema/beans"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:sshmsg="http://www.citrusframework.org/schema/ssh/message"
              xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.citrusframework.org/schema/testcase
              http://www.citrusframework.org/schema/testcase/citrus-testcase.xsd
              http://www.citrusframework.org/schema/ssh/message
              http://citrusframework.org/schema/ssh/message/citrus-ssh-message.xsd">

    <testcase name="SshTest_IT">

        <actions>
            <send endpoint="sshClient">
                <message>
                    <payload>
                        <sshmsg:ssh-request>
                            <sshmsg:command>ls -la</sshmsg:command>
                            <sshmsg:stdin></sshmsg:stdin>
                        </sshmsg:ssh-request>
                    </payload>
                </message>
            </send>

            <receive endpoint="sshClient">
                <message validator="">
                    <payload>
                        <sshmsg:ssh-response>
                            <sshmsg:stdout>@contains('.bashrc')@</sshmsg:stdout>
                            <sshmsg:stderr></sshmsg:stderr>
                            <sshmsg:exit>0</sshmsg:exit>
                        </sshmsg:ssh-response>
                    </payload>
                </message>
            </receive>
        </actions>
    </testcase>
</spring:beans>
于 2017-08-03T14:24:57.217 回答