我有一个非常简单的camel ssh路由设置,使用Java DSL只有一个pollCommand:date +%s%3N
,它应输出当前时间戳。但结果是空的。但是,如果命令只是date
,它将按预期工作。我很确定问题出在+
或%
字符中,但网址编码无效:
date%20%2B%25s%253N
date %2B%25s%253N
date +%25s%253N
date %2B%s%3N
上面没有任何工作。
以下是我正在使用的代码段:
public static void main(String[] args) throws Exception {
DefaultCamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder(){
@Override
public void configure() throws Exception {
from("ssh://root:pswrd@192.168.12.12:22?delay=1000&pollCommand=date +s3N%0A")
.convertBodyTo(String.class, "UTF-8")
.log(LoggingLevel.INFO, "${body}");
}
});
camelContext.start();
}
Camel的版本为 2.19.2 。
那么我应该如何编码/转义命令的参数部分(+%s%3N
)中的特殊字符?
答案 0 :(得分:0)
除了@Claus Ibsen之外还找到了另外一个解决方案
date RAW(+%s%3N)
我认为问题出现在+
符号中。所以我只需要在pollCommand
中不要使用它,这可以通过以下命令来完成:
date $(printf "\x2b")%s%3N