GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich den Datenverkehr der seriellen Schnittstelle überwachen?

socat ist ein Werkzeug, um (fast) alles mit (fast) allem zu verbinden, und tee kann Streams duplizieren.
In Ihrem Anwendungsfall könnten Sie Ihren seriellen Port /dev/ttyS0 anschließen zu einem PTY /tmp/ttyV0 , verweisen Sie dann mit Ihrer Anwendung auf den PTY und geben Sie socat tee ein Eingang und Ausgang irgendwo ausgeben, damit Sie sie beobachten können.

Wenn Sie "socat serial port pty tee debug" googeln, werden Sie auf mehrere Beispiele für "Standardverfahren" verwiesen, darunter:

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

Die Dateien in.txt und out.txt enthält dann die erfassten Daten.

Aktualisiert nach Kommentaren:

  • Die socat-Syntax sieht auf den ersten Blick verwirrend aus, aber tatsächlich sind es nur 2 verschachtelte Anweisungen.
    Ein kleiner Preis für ein so leistungsstarkes, vielseitiges Tool.
  • Wenn Sie Ihren seriellen Port einrichten oder andere ioctls senden müssen, tun Sie dies, bevor Sie socat aufrufen, da socat sie nicht weiterleiten kann.
  • Das Single-Purpose-Tool interceptty von 2006 hat eine etwas einfachere Syntax, kann aber nur TTYs abfangen (während ioctls weitergeleitet wird) und befindet sich wahrscheinlich nicht in Ihrem Paketmanager. (Die meisten Linux-Distributionen haben es nie zu ihren Repos hinzugefügt)

Ich glaube nicht, dass der serielle Treiber über eine Ablaufverfolgungsfunktion verfügt, mit der Sie Pakete beobachten können. Sie können strace verwenden um alle Lese- und Schreibvorgänge Ihrer Anwendung zu beobachten:

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

Ich habe Projekte namens Linux Serial Sniffer, jpnevulator und Moni gefunden. Die ersten beiden sehen aus, als würden sie genau das tun, was Sie wollen. Letzteres nennt sich Monitor, sieht aber eigentlich aus wie ein normales serielles Kommunikationsprogramm.


Linux
  1. Wie überwacht man eine serielle Verbindung bei 250000 Baud?

  2. Wie finde ich heraus, welcher serielle Port verwendet wird?

  3. Linux – So finden Sie Prozesse über die serielle Schnittstelle?

  4. Wie kann ich mit iptables weiterleiten?

  5. Wie kann ich feststellen, welcher Prozess UDP-Verkehr unter Linux verursacht?

Wie kann ich Daten an einer seriellen Schnittstelle in Linux überwachen?

Wie kann ich meinen gesamten Netzwerkverkehr über SSH tunneln?

Woher weiß ich, welches /dev/ttyS* meine serielle Schnittstelle ist?

Woher kennt cat die Baudrate der seriellen Schnittstelle?

Wie kann ich die Festplattenauslastung unter Linux überwachen?

Wie bestimme ich die Baudrate einer seriellen Schnittstelle?