Apache Camel 非轮询 SSH?

Apache Camel Non Polling SSH?

我正在尝试使用 camel-ssh 组件通过 ssh 连接到服务器。当从终端(没有命令)sshing 到服务器时,服务器开始无限期地定期在新行上吐出数据,即

machine user$ ssh username@11.100.200.1
You are now master for the port.
 Escape Sequence is: Control-]

DATA1
DATA2
DATA3
DATA4
DATA5
DATA6
DATA7
DATA8
DATA9
...

我的应用程序通过串行连接,但我从未收到来自串行连接的交换。稍微调试后,ssh 组件似乎希望连接、发送命令、等待 ssh 会话关闭、将在此期间收到的任何内容发送到交换并重复。

在我的使用场景中,我没有尝试发送命令,因此 ssh 会话永远不会终止。我想做的是打开一个很长的 运行 ssh 会话并获取在此期间发送的每个数据包。

camel ssh 可以吗?

骆驼路线示例:

from("ssh://username@11.100.200.1:9001?pollCommand=%0A")
        .process(exchange -> {
            System.out.println(exchange.getIn().getBody(String.class));
        });

不,这对于 camel-ssh 是不可能的。这不是它的设计目的(长轮询),但如您所见,运行 一个命令并获取其输出。

您将需要构建自己的 SSH 代码,或者精通 camel-ssh 代码并复制您可以使用的内容。然后需要弄清楚 "data packet" 何时结束(可能是换行字符)或其他内容,然后将其作为事件驱动的方式发出。