jpnevulator를 사용하여 애플리케이션과 하드웨어 직렬 포트 간의 직렬 트래픽을 캡처하고 기록하려면 어떻게 해야 합니까?

jpnevulator를 사용하여 애플리케이션과 하드웨어 직렬 포트 간의 직렬 트래픽을 캡처하고 기록하려면 어떻게 해야 합니까?

글쎄요, 저는 몇 시간 동안 인터넷 검색을 했기 때문에 분명히 이 주제에 관해 다양한 질문에 대한 답변을 이해할 수 없습니다. 좀 더 구체적인 방식으로 다시 질문을 함으로써 제가 이해할 수 있는 답변을 얻을 수 있기를 바랍니다.

직렬 포트에 연결된 외부 장치와 통신하는 일부 응용 프로그램이 Linux에서 실행되고 있습니다. 앱과 기기 사이에서 양방향으로 전송되는 데이터를 캡처 및 기록하고 파일의 각 줄 시작 부분에 타임스탬프를 추가할 수 있기를 원합니다.

테스트 사례로, 모니터링하려는 응용 프로그램으로 minicom을 사용하고 널 모뎀 케이블을 통해 역시 minicom을 실행하는 다른 컴퓨터에 연결했습니다. 한 컴퓨터에서 문자를 입력하면 다른 컴퓨터의 터미널에도 해당 문자가 나타나는 것을 확인했습니다. 여태까지는 그런대로 잘됐다.

그러다가 이런 질문을 발견했습니다.

직렬 포트 트래픽을 모니터링하는 방법은 무엇입니까?

이 질문에 대답하려면 jpnevulator 프로그램을 사용하는 것이 좋습니다. 그러나 매뉴얼 페이지를 보면 jpnevulator를 사용하여 원하는 것을 얻는 올바른 방법을 알 수 없습니다. 내가 시도한 것은 다음과 같습니다.

먼저 터미널 창을 열고 다음 명령을 입력했습니다.

$jpnevulator --tty=/dev/ttyS0 --pty --pass --read --ascii --timing-print --file=serial.log

출력이 표시됩니다. jpnevulator: Slave pts device is /dev/pts/18

그런 다음 다른 터미널 창을 열고 다음 명령을 입력했습니다.

minicom -D/dev/pts/18 -b115200

미니컴은 불만 없이 오픈했습니다.

그러나 두 터미널 중 하나(로컬 및 원격)에 문자를 입력하면 두 터미널 모두에 아무 것도 나타나지 않습니다. jpnevulator는 /dev/pts/18에 기록된 데이터만 기록합니다.

내 기대는 jpnevulator입니다.

  1. /dev/pts/18에서 데이터를 읽고 해당 데이터를 /dev/ttyS0으로 "전달"하여 이 데이터를 지정된 파일에 씁니다.

  2. /dev/ttyS0에서 데이터를 읽고 해당 데이터를 /dev/pts/18로 "전달"하여 이 데이터를 지정된 파일에 씁니다.

FAQ에 다음과 같은 설명이 있다는 것을 알고 있습니다. "Jpnevulator는 커널과 애플리케이션 사이에 위치하도록 설계되지 않았습니다. 죄송합니다."

그러나 동일한 FAQ의 두 번째 단락에는 다음과 같이 명시되어 있습니다. "운이 좋으면 좋은 소식이 있습니다. 얼마 전 Eric Shattow가 커널과 애플리케이션 사이에 있는 의사 터미널 장치를 사용할 것을 제안했습니다." 방법을 시도했지만 성공하지 못했습니다. 내가 무엇을 놓치고 있나요?

미리 감사드립니다.

건배, 앨런

p.s. 제가 참조한 기존 질문에서 언급한 socat 방법을 사용하여 트래픽을 앞뒤로 성공적으로 캡처할 수 있었지만 이 방법은 트래픽에 타임스탬프를 표시하는 방법을 제공하지 않습니다. jpnevulator가 이를 제공할 수 있기를 바랍니다.

답변1

나는 내 자신의 질문에 답했습니다. 내가 원하는 것을 더 잘 제공하는 또 다른 유틸리티를 찾았습니다.

https://github.com/geoffmeyers/interceptty

패키지에는 "예쁜" 출력을 제공하기 위해 가로채는 출력을 사후 처리하는 Perl 스크립트가 포함되어 있습니다. 각 행에 타임스탬프를 추가하도록 스크립트를 수정하는 것이 매우 쉽다는 것을 알았습니다.

이 콘텐츠를 제공한 Jeff Meyers에게 감사드립니다.

알렌

관련 정보