GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo monitorear el tráfico del puerto serie?

socat es una herramienta para conectar (casi) todo a (casi) todo, y tee puede duplicar flujos.
En su caso de uso, podría conectar su puerto serie /dev/ttyS0 a un PTY /tmp/ttyV0 , luego dirija su aplicación al PTY y tenga socat tee Salida de entrada y salida en algún lugar para que usted pueda observar.

Buscar en Google "socat serial port pty tee debug" le indicará varios ejemplos de "procedimiento estándar", uno de los cuales es:

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

Los archivos in.txt y out.txt luego contendrá los datos capturados.

Actualizado después de los comentarios:

  • La sintaxis de socat parece confusa al principio, pero de hecho, son solo 2 declaraciones anidadas.
    Un pequeño precio a pagar por una herramienta tan potente y versátil.
  • Si necesita configurar su puerto serie o enviar otros ioctls, hágalo antes de llamar a socat, ya que socat no puede representarlos.
  • La herramienta de propósito único interceptty a partir de 2006 tiene una sintaxis un poco más simple, pero solo puede interceptar TTY (mientras realiza un proxy de ioctl), y probablemente no esté en su administrador de paquetes. (La mayoría de las distribuciones de Linux nunca lo agregaron a sus repositorios)

No creo que el controlador serie tenga ninguna funcionalidad de seguimiento que le permita ver paquetes. Puedes usar strace para observar todas las lecturas y escrituras de su aplicación:

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

Encontré proyectos llamados Linux Serial Sniffer, jpnevulator y Moni. Los dos primeros parecen que hacen exactamente lo que quieres. El último se hace llamar monitor, pero en realidad parece un programa estándar de comunicación en serie.


Linux
  1. ¿Cómo monitorear una conexión serial a 250000 baudios?

  2. ¿Cómo encontrar qué puerto serie está en uso?

  3. ¿Cómo determinar la tasa de baudios de un puerto serie?

  4. ¿Cómo puedo portar hacia adelante con iptables?

  5. ¿Cómo puedo identificar qué proceso está generando tráfico UDP en Linux?

¿Cómo puedo monitorear datos en un puerto serie en Linux?

¿Cómo abrir, leer y escribir desde el puerto serie en C?

¿Cómo puedo eliminar el puerto TCP 16969 en Bash?

Supervise el tráfico TCP en un puerto específico

¿Cómo puedo configurar los bits de paridad cuando uso la pantalla para acceder a un puerto serie?

¿Cómo puedo monitorear la carga del disco duro en Linux?