GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso monitorare il traffico della porta seriale?

socat è uno strumento per connettere (quasi) tutto a (quasi) tutto e tee può duplicare i flussi.
Nel tuo caso d'uso potresti connettere la tua porta seriale /dev/ttyS0 a un PTY /tmp/ttyV0 , quindi indirizza la tua applicazione al PTY e ottieni socat tee out Input e Output da qualche parte affinché tu possa osservarli.

Cercare su Google "socat serial port pty tee debug" ti indirizzerà a diversi esempi di "procedura standard", uno dei quali è:

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

I file in.txt e out.txt conterrà quindi i dati acquisiti.

Aggiornato dopo i commenti:

  • La sintassi di socat all'inizio sembra confusa, ma in realtà si tratta solo di 2 istruzioni nidificate.
    Un piccolo prezzo da pagare per uno strumento così potente e versatile.
  • Se devi configurare la tua porta seriale o inviare altri ioctl, fallo prima di chiamare socat, poiché socat non può inoltrarli.
  • Lo strumento monouso interceptty dal 2006 ha una sintassi leggermente più semplice, ma può solo intercettare TTY (durante il proxy ioctls) e probabilmente non è nel tuo gestore di pacchetti. (La maggior parte delle distribuzioni Linux non l'ha mai aggiunto ai propri repository)

Non credo che il driver seriale abbia alcuna funzionalità di tracciamento che ti consenta di guardare i pacchetti. Puoi usare strace per osservare tutte le letture e le scritture dalla tua applicazione:

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

Ho trovato progetti chiamati Linux Serial Sniffer, jpnevulator e Moni. I primi due sembrano fare esattamente quello che vuoi. L'ultimo si autodefinisce monitor, ma in realtà sembra un normale programma di comunicazione seriale.


Linux
  1. Come monitorare una connessione seriale a 250000 baud?

  2. Come trovare quale porta seriale è in uso?

  3. Come monitorare e registrare il traffico di rete su Linux utilizzando vnStat

  4. Come aprire, leggere e scrivere dalla porta seriale in C?

  5. Come posso incanalare tutto il mio traffico di rete attraverso SSH?

Monitora il traffico TCP su una porta specifica

Come posso essere sicuro di aver collegato un dispositivo a una porta USB 3?

Come posso monitorare il carico del disco rigido su Linux?

Come determinare il baud rate di una porta seriale?

Come posso eseguire il port forwarding con iptables?

Come posso identificare quale processo sta creando traffico UDP su Linux?