登錄交談過了一段時間,我終於得到了socat
以同樣的方式表現爲putty
,使用:socat:用串口
stty -F /dev/ttyS2 115200 cs8 ixoff
socat $(tty),raw,echo=0,escape=0x03,nonblock /dev/ttyS2
stty sane
我也想談話記錄到日誌文件。
編輯:
我想出了一個辦法如何做到這一點,(但我認爲這是一個雜牌組裝電腦),所以我回答我自己的問題 - 這是堆棧溢出標準的有效答案。
登錄交談過了一段時間,我終於得到了socat
以同樣的方式表現爲putty
,使用:socat:用串口
stty -F /dev/ttyS2 115200 cs8 ixoff
socat $(tty),raw,echo=0,escape=0x03,nonblock /dev/ttyS2
stty sane
我也想談話記錄到日誌文件。
編輯:
我想出了一個辦法如何做到這一點,(但我認爲這是一個雜牌組裝電腦),所以我回答我自己的問題 - 這是堆棧溢出標準的有效答案。
(我的第一種方法是不正確的,所以我修改)
我從來沒有使用socat
,但如果有因爲我-v log.txt
選項我有一個可能的解決方案爲您-v
選項看到它打印也導致stderr。
我假設您希望將日誌文件發送到log.txt中,將前10行和所有\r
字符刪除。在支持進程替換一個bash這是可以做到這樣的:
socat -v ... 2> >(awk 'NR>10 {gsub("\r","");print}'>log.txt)
(介意兩個>
馬克之間的空間!)
這將創建一個過程,>(...)
返回一個文件如/dev/fd/68
,並將stderr
重定向到它。實際上,這是一個通往方括號內指定進程的管道(awk
)。所以文本通過awk,其輸出寫入log.txt
。
如上所述,您沒有awk這可以使用sed(或tail
和tr
管道但它需要額外的過程)來解決。
socat -v ... 2> >(sed -e '1,10 d' -e 's/\r//g' >log.txt)
(介意兩個>
馬克之間的空間!)
看來cygwin不支持這一點,但它的工作在一個相當老RedHat Linux上。
其實你也可以使用-lf
(我不知道,這個打印您需要的一切也許-v
如果一個更好的選擇...。):
-lf <logfile>
Writes messages to <logfile> [filename] instead of stderr.
Some third party libraries, in particular libwrap, might not obey
this option.
所以原來的方法也可以工作:
socat -lf >(sed -e '1,10 d' -e 's/\r//g' >log.txt) ...
我希望這有助於!
'人socat'應該給你的方式來做到這一點,這裏是http://www.dest-unreach.org/socat/doc/socat.html – BMW 2014-12-07 04:39:51
嗯,我讀[this](https:///stuff.mit.edu/afs/sipb/machine/penguin-lust/src/socat-1.7.1.2/EXAMPLES)和[this](http://technostuff.blogspot.com/2008/10/some-useful- socat-commands.html)以及手冊頁。該文檔給了我一些想法嘗試,但沒有一個工作:'socat -v log.txt ...'有一個頭文件和一個不必要的'\ r',而任何嘗試將'socat'(將串口綁定到控制檯的第一個實例)到另一個(將控制檯綁定到文件)的任何一個嘗試都會產生一個錯誤(太多/很少地址)或空文件。 – Ulrik 2014-12-10 15:03:34
請寄出'socat -v log.txt'的輸出,以及爲了滿足您的需求需要對文件進行哪些更改。我相信'awk'會做到這一點。 – ShellFish 2015-01-11 00:20:06