- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一段时间后,我终于让 socat
以与 putty
相同的方式运行,使用:
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) ...
希望对您有所帮助!
关于bash - socat:使用串行端口记录对话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338706/
在我的服务器上使用 Socat 我有当前命令: socat -u tcp-l:7767,fork system:/app/getmsg.sh 所有 getmsgh.sh 所做的是: read MESS
外部数据提供者与我们的其中一台服务器建立 tcp 连接。 我想使用 socat 来“多路复用”传入的数据,以便多个程序可以接收从外部数据提供者发送的数据。 socat -u TCP4-LISTEN:4
我正在使用 socat 命令在我的嵌入式 linux 设备上创建一个 tty 接口(interface),例如: socat pty,link=/dev/ttyS9 TCP:10.0.10.1:999
我一直在尝试使用socat通过虚假的HTTP答复对正在侦听的套接字的每个连接进行响应。我无法正常工作。可能是因为我使用的是Socat的Cygwin版本?我不知道。 问题的一部分是我不希望将第二个参数写
一段时间后,我终于让 socat 以与 putty 相同的方式运行,使用: stty -F /dev/ttyS2 115200 cs8 ixoff socat $(tty),raw,echo=0,es
我在我的 ubuntu 笔记本上创建了两个虚拟串行端口。 -> sudo socat/dev/ttyUSB7/dev/ttyUSB8 现在我想删除串行端口以及它们之间的连接。 我找不到执行此操作的命令
我要模拟 3 个不同的应用程序,每个都连接到不同的串行调制解调器 (rs232)。我希望每个应用程序都通过在“虚拟”串行线上写入来与其他应用程序通信我尝试配置 socat 应用程序,但现在我只能使用以
我正在运行这样的隧道: socat TCP-LISTEN:9090,fork TCP:192.168.1.3:9090 我想运行一个脚本来执行带有通过隧道的字符串的代码。 脚本不改变字符串,只独立处理
我使用带有 OpenWRT 的 TP-Link 路由器 TL-WR710N 作为 IPv4 到 IPv6 的转换器/网关,使用以下 socat 命令: socat TCP4-LISTEN:80,for
我使用以下代码接收连接: socat TCP-LISTEN:4000,fork EXEC:./myscrpit" 我的脚本中需要一个发件人的 IP 地址,但是 SOCAT_PEERADDR 没有设置,
我正在编写 JUnit 测试来测试我的应用程序。该应用程序是用 Java 编写的,并使用 purejavacomm 库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器通信。除了简单
我在 kubernetes 的一个端口上运行 pyspark。我正在尝试转发到我的本地机器。执行 python 文件时出现此错误。 Forwarding from 127.0.0.1:7077 ->
我正在使用 socat 版本 1.7.3.2 从 VLAN 以太网设备创建字符设备以进行通信。我使用以下命令创 build 备: socat INTERFACE:wwan0.vlan_dev1,typ
我想用 socat 创建一个端口转发器,以便通过单个 openssl channel 重定向多个分支连接。我可以在不使用任何 tun 或 vpn 的情况下在 socat 中执行此操作吗? 到目前为止,
如何用socat测试远程端口是否可达? 通过 netcat 我们可以 nc -zv 192.168.1.15 22 如何使用 socat 做到这一点? 最佳答案 由于 OP 请求等效于 -z,因此以下
我正在使用 Windows 的 socat 作为客户端通过 SSH 隧道 DNS,它可以完美地工作,直到 ssh 连接终止或暂时不可用 - 当这种情况发生时 socat Windows 客户端终止并需
目标是使用串行接口(interface)连接到嵌入式设备。到目前为止,我使用过: stty -F /dev/ttyS2 115200 cs8 ixoff socat readline,history=
此命令(串行端口重定向器)接受 TCP:11313 上的单个连接: socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:113
我有一个开放端口的服务器,每秒接收 50 到 1000 条消息。我所说的消息是指发送单行文本。 本质上,我们希望将这些消息记录在一个文件中,该文件将每小时(或 x 分钟)处理一次。 我已经创建了一个在
我只想要一个进程打开 socat 创建的 PTY 设备。 我使用以下内容创建 my_ser设备,但它可以被多个进程读/写。 socat -t 0 INTERFACE:my_nw,type=2 PTY,
我是一名优秀的程序员,十分优秀!