2016-09-27 8 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.shoutFilter.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으로 모든 프로세스를 래핑하는 바이너리 프로토콜로 작동하게하려면이 경우에는 쉘 제거가 도움이 될 수 있습니다 (예 : here 참조).

행운을 빈다.