2016-09-27 9 views
1

で実行するスクリプトは、私はこのようなトンネルを実行しています:socatに関する双方向トンネル

socat TCP-LISTEN:9090,fork TCP:192.168.1.3:9090 

私はトンネルを通過した文字列でコードを実行するためのスクリプトを実行したいと思います。

スクリプトは文字列を変更せず、文字列を単独で処理しますが、両端で変更することなく通過させることができます。

これは可能ですか?

答えて

1

あなたも、このアプローチを使用して通信を変更することができるはずです。

は、接続ごとに実行されますヘルパースクリプトhelper.sh準備:

#!/bin/bash 

./inFilter.sh | socat - TCP:192.168.1.3:9090 | ./outFilter.sh 

をまた使ってリスニングを開始:

socat TCP-LISTEN:9090,fork EXEC:"./helper.sh" 

スクリプトinFilter.shおよびoutFilter.shは、クライアントのクライアントとサーバーの部分を処理していますmmunication。

inFilter.sh

#!/bin/bash 

while read -r l ; do echo "IN(${l})" ; done 

outFilter.sh

#!/bin/bash 

while read -r l ; do echo "OUT(${l})" ; done 

この方法は、行ベースのテキスト通信のために働くべきである(ほぼすべてがline-bufferedあります)。

stdbuf -i0 -o0ですべてのプロセスをラップするバイナリプロトコルで動作させるには、このケースではおそらくシェルを取り除くことが役立つでしょう(.e.g here参照)。

幸運を祈る!