Camel SSH路由 - 转义字符

时间:2017-11-01 15:47:54

标签: ssh apache-camel

我有一个非常简单的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)中的特殊字符?

1 个答案:

答案 0 :(得分:0)

除了@Claus Ibsen之外还找到了另外一个解决方案

date RAW(+%s%3N) 

我认为问题出现在+符号中。所以我只需要在pollCommand中不要使用它,这可以通过以下命令来完成:

date $(printf "\x2b")%s%3N