GNU/Linux >> Linux の 問題 >  >> Linux

シリアルポートのトラフィックを監視するにはどうすればよいですか?

socat は (ほぼ) すべてを (ほぼ) すべてに接続するツールであり、tee はストリームを複製できます。
あなたのユースケースでは、シリアルポート /dev/ttyS0 を接続できます PTY /tmp/ttyV0 に 、次にアプリケーションを PTY にポイントし、socat tee を持っています あなたが観察できるようにどこかで入力と出力を出力してください。

「socat serial port pty tee debug」をグーグルで検索すると、いくつかの「標準的な手順」の例が表示されます。その 1 つが次のとおりです。

socat /dev/ttyS0,raw,echo=0 \
SYSTEM:'tee in.txt |socat - "PTY,link=/tmp/ttyV0,raw,echo=0,waitslave" |tee out.txt'

ファイル in.txtout.txt その後、キャプチャされたデータが含まれます。

コメント後に更新:

  • socat 構文は最初はわかりにくいように見えますが、実際には、ネストされた 2 つのステートメントにすぎません。
    このような強力で用途の広いツールに支払う代償はわずかです。
  • シリアルポートを設定したり、他の ioctl を送信したりする必要がある場合は、socat を呼び出す前に行ってください。socat はそれらをプロキシできないためです。
  • 専用ツール interceptty 2006 年以降は構文が少し単純になりましたが、(ioctl をプロキシしている間) TTY のみをインターセプトでき、おそらくパッケージ マネージャーには含まれていません。 (ほとんどの Linux ディストリビューションはリポジトリに追加していません)

シリアルドライバーには、パケットを監視できるトレース機能がないと思います。 strace を使用できます アプリケーションからのすべての読み取りと書き込みを観察するには:

strace -s9999 -o myapp.strace -eread,write,ioctl ./myapp

Linux Serial Sniffer、jpnevulator、Moni というプロジェクトを見つけました。最初の2つは、まさにあなたが望むことをしているように見えます。最後の 1 つは自分自身をモニターと呼んでいますが、実際には標準のシリアル通信プログラムのように見えます。


Linux
  1. 250000ボーでシリアル接続を監視する方法は?

  2. 使用されているシリアルポートを見つける方法は?

  3. vnStat を使用して Linux でネットワーク トラフィックを監視およびログに記録する方法

  1. Cでシリアルポートを開き、読み書きする方法は?

  2. 特定のポートで TCP トラフィックを監視する

  3. screen を使用してシリアルポートにアクセスするときにパリティビットを設定するにはどうすればよいですか?

  1. Linux –シリアルポートを使用してプロセスを見つける方法は?

  2. ディスク io を監視するにはどうすればよいですか?

  3. cat はどうやってシリアルポートのボーレートを知るのですか?