현재 다음 명령을 사용하고 있습니다. 로컬 시스템의 직렬 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
버퍼링이 실시간 통신을 방해하지 않는지 확인하고 싶습니다.두 로봇 컨트롤러 사이. 라인 버퍼링은 괜찮지만 그게 전부입니다.
위 명령에는 많은 연결이 있으며 기본 버퍼링된 파이프/소켓에 대해 잘 모르겠습니다. 제가 찾는 것을 도와주실 수 있나요?또한 번역이나 에코를 제거해야 합니다(
stty ... raw ...
이미 완료되었다고 생각합니다).이 통신 문제를 해결하기 위해 선호되는 다른 방법이 있습니까? 즉, 다른 명령?
Debian GNU/Linux 실행 - 우분투
답변1
stdio 버퍼링이 발생하면 stdbuf
이를 실제 명령 앞에 붙입니다.
stty
명시적인 것이 필요할 수도 있습니다 -echo
.
대안으로 SSH 암호화가 필요하지 않은 경우 다음을 확인하세요.우빕한 컴퓨터의 USB 장치를 다른 컴퓨터에서 볼 수 있게 만드는 모듈입니다.
tee
로깅을 방지하려면 socat -v
stderr에서 두 데이터 스트림의 복사본을 가져오십시오.