GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa memantau lalu lintas port serial?

socat adalah alat untuk menghubungkan (hampir) semuanya ke (hampir) semuanya, dan tee dapat menduplikasi aliran.
Dalam usecase Anda, Anda dapat menghubungkan port serial Anda /dev/ttyS0 ke PTY /tmp/ttyV0 , lalu arahkan aplikasi Anda ke PTY, dan minta socat tee keluar Input dan Output di suatu tempat untuk Anda amati.

Googling "socat serial port pty tee debug" akan mengarahkan Anda ke beberapa contoh "prosedur standar", salah satunya:

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

File in.txt dan out.txt kemudian akan berisi data yang diambil.

Diperbarui setelah komentar:

  • Sintaks socat terlihat membingungkan pada awalnya, namun sebenarnya, ini hanyalah 2 pernyataan bersarang.
    Harga kecil untuk membayar alat yang begitu kuat dan serbaguna.
  • Jika Anda perlu menyiapkan port serial, atau mengirim ioctl lain, lakukan sebelum memanggil socat, karena socat tidak dapat mem-proxy mereka.
  • Alat serbaguna interceptty dari tahun 2006 memiliki sintaks yang sedikit lebih sederhana, tetapi hanya dapat mencegat TTY (saat mem-proxy ioctl), dan mungkin tidak ada di manajer paket Anda. (Kebanyakan distro Linux tidak pernah menambahkannya ke repo mereka)

Saya tidak berpikir driver serial memiliki fungsi pelacakan yang memungkinkan Anda untuk menonton paket. Anda dapat menggunakan strace untuk mengamati semua pembacaan dan penulisan dari aplikasi Anda:

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

Saya menemukan proyek bernama Linux Serial Sniffer, jpnevulator, dan Moni. Dua yang pertama terlihat seperti mereka melakukan apa yang Anda inginkan. Yang terakhir menyebut dirinya monitor, tetapi sebenarnya terlihat seperti program komunikasi serial standar.


Linux
  1. Bagaimana Memantau Koneksi Serial @ 250000 Baud?

  2. Bagaimana Menemukan Port Serial Yang Digunakan?

  3. Linux – Bagaimana Menemukan Proses Menggunakan Port Serial?

  1. Cara Memantau dan Mencatat Lalu Lintas Jaringan di Linux Menggunakan vnStat

  2. Bagaimana saya bisa memantau data pada port serial di Linux?

  3. Bagaimana cara membuka, membaca, dan menulis dari port serial di C?

  1. Bagaimana saya bisa mematikan TCP port 16969 di Bash?

  2. Bagaimana saya bisa menyalurkan semua lalu lintas jaringan saya melalui SSH?

  3. Bagaimana saya tahu /dev/ttyS* mana port serial saya?