如何使用 jpnevulator 擷取和記錄應用程序和硬體串列埠之間的串列流量?
好的,我已經在Google上搜尋了幾個小時,所以我顯然無法理解關於這個主題的各種問題的答案。我希望,通過以更具體的方式再次提出問題,我將能夠得到我能理解的答案。
我有一些在 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
Minicom 毫無怨言地打開了。
但是,當我在任一終端(本地和遠端)中輸入字元時,任一終端都沒有出現任何內容。jpnevulator 僅記錄寫入 /dev/pts/18 的數據。
我的期望是 jpnevulator :
- 從 /dev/pts/18 讀取數據並將此數據“傳遞”到 /dev/ttyS0,同時將此數據寫入指定文件。
- 從 /dev/ttyS0 讀取數據並將此數據“傳遞”到 /dev/pts/18,同時將此數據寫入指定文件。
我知道常見問題解答中說“Jpnevulator 從未建構為位於核心和您的應用程序之間。對不起。”
然而,同樣的問題在第二段中指出:“現在幸運的是,有一個好消息:不久前,Eric Shattow 建議使用偽終端設備位於核心和您的應用程序之間。” 這是我試圖採取的方法,但我沒有成功。我錯過了什麼?
提前感謝大家。
乾杯,艾倫
ps 我成功地能夠使用我引用的現有問題中提到的 socat 方法擷取來回流量,但這種方法沒有提供任何為流量添加時間戳的方法。我希望 jpnevulator 會為我提供這個。
我已經回答了我自己的問題:我找到了另一個可以更好地提供我想要的實用程序:
https://github.com/geoffmeyers/interceptty
該軟體包包括一個 perl 腳本,該腳本對攔截的輸出進行後處理以提供“漂亮”的輸出。我發現很容易修改腳本來為每一行添加一個時間戳。
感謝 Geoff Meyers 提供了這個。
艾倫