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の2番目の段落には次のように記載されています。 「運が良ければ良いニュースがあります。しばらく前に、Eric Shattowはカーネルとアプリケーションの間にある疑似端末デバイスを使用することを提案しました。」方法を試しましたが、成功しませんでした。私は何を見逃していますか?

よろしくお願いします。

乾杯、アラン

ps私が参照した既存の質問で述べたsocatメソッドを使用してトラフィックを前後に正常にキャプチャできましたが、この方法はトラフィックにタイムスタンプを表示する方法を提供しません。 jpnevulatorがこれを提供できることを願っています。

ベストアンサー1

私は自分の質問に答えた。私が望むものをよりよく提供する別のユーティリティを見つけました。

https://github.com/geoffmeyers/interceptty

パッケージには、「きれいな」出力を提供するために傍受される出力を後処理するPerlスクリプトが含まれています。各行にタイムスタンプを追加するようにスクリプトを変更するのはとても簡単です。

このコンテンツを提供したJeff Meyersに感謝します。

アレン

おすすめ記事