원격 컴퓨터의 직렬 포트에 연결하고 데이터를 로깅하기 위한 버퍼링되지 않은 socat 명령

원격 컴퓨터의 직렬 포트에 연결하고 데이터를 로깅하기 위한 버퍼링되지 않은 socat 명령

현재 다음 명령을 사용하고 있습니다. 로컬 시스템의 직렬 ttyUSB0에서 데이터를 읽고 로깅을 위해 두 개의 tee 명령을 통해 SSH에 양방향으로 연결합니다. 원격 측에서 socat은 stdio를 원격 ttyUSB0에 연결합니다.

stty -F /dev/ttyUSB0 raw 3000000

ssh  [email protected] stty -F /dev/ttyUSB0 raw 3000000

socat /dev/ttyUSB0,raw,echo=0 SYSTEM:'"tee -a log_l2r | ssh  [email protected] socat - /dev/ttyUSB0,raw,echo=0  | tee -a log_r2l"',pty,echo=0
  1. 버퍼링이 실시간 통신을 방해하지 않는지 확인하고 싶습니다.두 로봇 컨트롤러 사이. 라인 버퍼링은 괜찮지만 그게 전부입니다.
    위 명령에는 많은 연결이 있으며 기본 버퍼링된 파이프/소켓에 대해 잘 모르겠습니다. 제가 찾는 것을 도와주실 수 있나요?

  2. 또한 번역이나 에코를 제거해야 합니다( stty ... raw ...이미 완료되었다고 생각합니다).

  3. 이 통신 문제를 해결하기 위해 선호되는 다른 방법이 있습니까? 즉, 다른 명령?

Debian GNU/Linux 실행 - 우분투

답변1

stdio 버퍼링이 발생하면 stdbuf이를 실제 명령 앞에 붙입니다.

stty명시적인 것이 필요할 수도 있습니다 -echo.

대안으로 SSH 암호화가 필요하지 않은 경우 다음을 확인하세요.우빕한 컴퓨터의 USB 장치를 다른 컴퓨터에서 볼 수 있게 만드는 모듈입니다.

tee로깅을 방지하려면 socat -vstderr에서 두 데이터 스트림의 복사본을 가져오십시오.

관련 정보