Socat은 SSH를 통해 자체 정리할 수 없습니다.

Socat은 SSH를 통해 자체 정리할 수 없습니다.

SSH, socat 및 제가 만든 다른 유틸리티를 사용하여 로컬 컴퓨터에 연결된 컴퓨터와 통신하려고 합니다.

내가하고있는 소스 머신에서 :

ssh root@localhost -p 2004 'socat -u TCP-LISTEN:5000 OPEN:foo.test,creat'

(질문과 관련없이 현재 실행중인 유틸리티를 사용하여 4000을 5000으로 매핑합니다.) 그런 다음 다음을 수행하십시오.

socat -d -d TCP:localhost:4000 ./some_file

파일 전송이 올바르게 발생합니다. 문제는 이러한 유형의 작업을 연속해서 빠르게 수행해야 하고 초기 socat TCP-LISTEN서버 설정이 완전히 종료되지 않는다는 것입니다. 포트가 지워질 때까지 기다려야 하기 때문인 것 같습니다. 그렇지 않으면 다음 오류가 발생합니다. :

2016/05/14 11:56:01 socat[655] E bind(3, {LEN=0 AF=2 0.0.0.0:5000}, 16): Address already in use

어떤 콘센트에서도 깔끔하게 청소할 수 있는 socat 옵션이 없나요? 기본적으로 파일 전송을 위해 이것이 필요합니다. 원격 시스템을 한 번만 닫으려면 socat이 필요합니다.

ssh편집: 파일 경로가 매번 다르기 때문에 일부러 사용해야 했고 OPEN, 하나씩 빠르게 수행해야 했습니다.

답변1

로 변경할 수 있지만 TCP-LISTEN:5000문제 TCP-LISTEN:5000,reuseaddr는 예를 들어 테스트 중에 중단이 발생하여 원격에서 socat이 중지되지 않은 것일 수 ssh있습니다 Control-C.

socat간단히 요청 fork하고 동일한 작업을 다시 수행하기 위해 새 연결을 다시 수신하면 시작 반복을 피할 수 있습니다.

socat -u TCP-LISTEN:5000,reuseaddr,fork OPEN:foo.test,creat

관련 정보