포트에 쓰여진 패킷을 감시하는 포트 모니터링 도구가 있습니까? 특히 Java로 작성된 프로그램이 작동하는지 확인하고 싶습니다. 작은 응용 프로그램이 포트에 메시지를 쓰고 있는지 확인하려면 일종의 도구가 필요합니다. 어떻게해야합니까?
포트에 쓰여진 패킷을 감시하는 포트 모니터링 도구가 있습니까? 특히 Java로 작성된 프로그램이 작동하는지 확인하고 싶습니다. 작은 응용 프로그램이 포트에 메시지를 쓰고 있는지 확인하려면 일종의 도구가 필요합니다. 어떻게해야합니까?
답변:
Linux Serial Sniffer , jpnevulator 및 Moni 라는 프로젝트를 찾았습니다 . 처음 두 가지는 그들이 원하는 것을 정확하게하는 것처럼 보입니다. 마지막은 모니터 자체를 호출하지만 실제로는 표준 직렬 통신 프로그램처럼 보입니다.
socat 은 (거의) 모든 것을 (거의) 모든 것에 연결하는 도구이며, 티 는 스트림을 복제 할 수 있습니다.
유스 케이스에서 직렬 포트 /dev/ttyS0를 PTY /tmp/ttyV0에 연결 한 다음 애플리케이션을 PTY로 지정하고 tee관찰 할 수있는 입력 및 출력을 배치 할 수 있습니다.
인터넷 검색 "socat 직렬 포트 pty tee 디버그"는 다음과 같은 몇 가지 예를 보여줍니다.
socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'
파일은 in.txt및 out.txt다음 캡처 된 데이터가 포함됩니다.
이는 주석 작성자 (@ogurets)가 작동하는 것으로 확인되었습니다.
socatioctl 호출을 프록시 할 수는 없습니다 .
직렬 드라이버에는 패킷을 볼 수있는 추적 기능이 없다고 생각합니다. strace애플리케이션에서 모든 읽기 및 쓰기를 관찰 하는 데 사용할 수 있습니다 .
strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp
interceptty 그 일을합니까 :
interceptty /dev/ttyACM0 /dev/ttyDUMMY
또는 출력 형식이 좋고 백엔드 장치를 구성하고 라인 버퍼링을 사용하는 경우 :
interceptty -s 'ispeed 19200 ospeed 19200' -l /dev/ttyACM0 /dev/ttyDUMMY | interceptty-nicedump
그런 다음 프로그램과 연결하십시오 /dev/ttyDUMMY.
wget온 클릭 이후 .tar.gz설치 어떻게 든 손상된 듯 파일) gcc및 make다음 실행 ./configure하고 make install. OP와 내가 원하는 것을 정확하게 수행합니다.
Gilles의 답변에 감사합니다 !
strace -s 9999 -e read -ffp $(sed '/ttyUSB0/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d' <(ls -l /proc/[1-9]*/fd/* 2>/dev/null)) 2>&1 | perl -e '$|=1;my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);sub cnv { my $ch=$_[0];$ch=$qa[$1] if $ch=~/([abefnrt])/;return chr(oct($ch)); };while (<>) { /^read.\d+,\s+"(.*)",\s\d+.*$/ && do { $_=$1;s/\\(\d+|[abefnrt])/cnv($1)/eg;print; };};'
죄송합니다. 설명하겠습니다.
strace -s 9999 -e read -ffp $(
sed "/tty${1:-USB0}/s/^.*proc.\([0-9]\+\).fd.*/\1/p;d" <(
ls -l /proc/[1-9]*/fd/* 2>/dev/null
)
) 2>&1 |
perl -e '
$|=1;
my %qa=('a'=>7,'b'=>10,'e'=>33,'f'=>14,'n'=>12,'r'=>15,'t'=>11);
sub cnv {
my $ch=$_[0];
$ch=$qa[$1] if $ch=~/([abefnrt])/;
return chr(oct($ch));
};
while (<>) {
/^read.\d+,\s+"(.*)",\s\d+.*$/ && do {
$_=$1;
s/\\(\d+|[abefnrt])/cnv($1)/eg;
print;
};
};
'
ls -l /proc/[0-9]*/fd/* | grep ttyUSB0대신에 사용 합니다 lsof ttyUSB0.ttyUSB0tty${1:-USB0}: 스크립트로 사용, 허용됩니다 인수로 시리얼 장치의 이름으로 다음 실행 ttySniff USB0또는 ttySniff S0등등합니다.unbackslash기록 된 문자열을 나타 strace냅니다.참고 : script -t전체를 재생하고 타이밍 실행을 추적 할 수 있도록 사용하여 실행합니다.
ttyUSBSpy를 살펴 보십시오 . 알파 무대에 있지만 작동합니다.
import pcopy.Google도 찾기 위해 포기했습니다.
minicom직렬 포트를 모니터링하는 도구 목록에 없습니다. 예를 들어 arduino 장치를 청취하는 데 사용하십시오.
minicom --device /dev/ttyACM0 --baud 9600