如何修改netcat的输入流?

我正在为redhat linux机器上的串行设备创建TCP / IP接口。 bash脚本中的netcat用于实现这一目标,但却遇到了很多麻烦。

nc -l $PORT < $TTYDEVICE > $TTYDEVICE

问题是串行设备在其响应中对行结束使用回车符('\ r')。 我想把它翻译成(“\ r \ n”)所以windows机器telneting可以毫无困难地查看响应。 我试图用一个简单的bash解决方案来弄清楚如何解决这个问题。 我也可以访问stty来配置串行设备,但输入端没有“\ r”到“\ r \ n”转换(据我所知)。

我确实尝试在netcat的输入端使用tr,但它没有用。

#cat $TTYDEVICE | tr '\r' '\r\n' | nc -l $PORT > $TTYDEVICE

有任何想法吗?

采纳答案:

使用标准工具这非常困难,但在perl中非常简单(尽管perl现在几乎是标准工具):

perl -pe 's/\r/\r\n/g'

上面的版本可能会在进行任何处理之前读取整个输入到内存中(它会读取直到找到'\ n',如果输入不包含'\ n',它将是整个输入),所以您可能更喜欢:

perl -015 -pe '$\="\n"'

参考更多解答: How to modify input stream of netcat? ,转载请保留出处如何修改netcat的输入流?及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:stty