socat 사용 예시

socat은 리눅스에서 사용할 수 있는 다목적 릴레이 프로그램이다. 쉽게 얘기해서 Source, Sink 간에 두 개의 단방향 채널을 열어, 서로 연결해준다.

설치는 간단히 apt를 이용하여 설치가 가능하다.

$ sudo apt install socat

사용방법은

$ socat [option] <source> <sink>

와 같이 사용하며, 옵션은 socket -h 를 이용해 확인 가능. 많이 사용하는 것으로는 -d 옵셩는 로그 메시지 출력, -u, -U를 이용해 단방향, 역방향 설정 등이 있다.

source 및 sink에는 linux에서 사용하는 거의 모든 인터페이스들이 적용 가능하다.

  • Files
  • Pipes
  • Devices (serial line, pseudo-terminal, etc)
  • `Sockets (UNIX, IP4, IP6 – raw, UDP, TCP)
  • SSL sockets
  • Proxy CONNECT connections
  • File descriptors (stdin, etc)
  • The GNU line editor (readline)
  • Programs
  • Combinations of two of these

실제 사용 예를 들어본다면,

  • STDIN <-> STDOUT: 키보드 입력, 화면 출력
$ socat -dd STDIN STDOUT
  • TCP 2000포트로 연결하면 자동으로 TCP 22 포트로 연결
$ socat -dd TCP-LISTEN:2000,reuseaddr,fork TCP:0.0.0.0:22
  • TCP 8080포트로 연결하면 자동으로 data.txt 파일을 생성하고 수신받은 내용 저장
$ socat -dd -u TCP-LISTEN:8080,reuseaddr,fork open:data.txt,create,append

이외에도 시리얼포트 등도 가능하여. 간단히 시리얼포트-이더넷 기능 구현 가능하고, .UDP를 TCP로 변환, 그 반대 역시 가능하여, 활용 방법은 무궁무진한다.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.