我有一个可以通过 UNIX 套接字(实际上是 abstract socket,我认为它是特定于 Linux 的)进行通信的进程。
我正在编写一个 shell 脚本,它需要向这个进程发送命令。为此,我决定尝试使用 SOCAT。我正在尝试弄清楚如何 (1) 连接到抽象套接字,(2) 向它发送单个命令(字符串),(3) 读取响应并将响应打印到标准输出。
到目前为止,我可以通过简单地说:
socat ABSTRACT-CONNECT:mysocket STDIN
这会将 STDIN 连接到套接字,因此如果我知道手动键入命令,套接字将读取字符串,然后将结果响应输出到控制台。
除非我在脚本中运行 socat,否则我需要自动将字符串发送到 STDIN。好的,所以最直接的方法似乎是将字符串通过管道传输到 STDIN。所以假设我们有一个名为“status
”的命令,我会说:
echo status | socat ABSTRACT-CONNECT:mysocket STDIN
这似乎有效(socat 报告没有错误),只是结果没有发送到标准输出。相反,调用只是返回而没有响应。那么我怎样才能从套接字中读取一行并将结果显示在标准输出上呢?
最佳答案
对第二个参数使用“STDIO”地址类型,这是一个双向地址。它从控制台读取输入数据并发送到对端,以及从对端接收数据并写入控制台输出。值得一提的是 -
又名。 破折号 是 stdio 的快捷方式。
关于linux - 使用socat连接socket,发送命令,读取单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835460/