2016-05-18 14 views
0

私はcamel-sshコンポーネントを使用してサーバーにsshしようとしています。 (コマンドなし)、端末からサーバにsshingすると、サーバーは無期限Apache Camel Non Polling SSH?

machine user$ ssh [email protected] 
You are now master for the port. 
Escape Sequence is: Control-] 

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

私のアプリケーションは、シリアルの上に接続されているが、私はシリアル接続からの交換を受けることはありませんつまり、新しい行に定期的にデータを吐き出すために開始します。ちょっとデバッグした後は、ssh-componentが接続してコマンドを送信し、sshセッションが閉じるのを待っている間に、この時間に受信したものを交換機に送り、繰り返しているように見えます。

私の使用シナリオでは、私はコマンドを送信しようとしていないので、sshセッションは決して終了しません。私がしたいのは、長時間実行しているsshセッションを開き、この間に送信された各データパケットを保持することです。

これはcamel sshで可能ですか?

例のラクダのルート:

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

答えて

1

ありませんこれはラクダのsshでは不可能です。それは、(長い投票)のために設計されたものではありませんが、あなたが見ることができるように、単一のコマンドを実行し、その出力を取得します。

あなたは独自のSSHコードを作成するか、camel-sshコードをピークにして、使用できるものをコピーする必要があります。そして、 "データパケット"がいつ終わるか(たぶん新しい行のchar)か何かを把握してから、それをイベントドリブンファッションとして放出する必要があります。