linux - 使用socat连接socket,发送命令,读取单行

标签 linux bash sockets socat

我有一个可以通过 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/

相关文章:

python - 使用 pyodbc 从 Linux 到 Windows SQL Server 进行身份验证

linux - 哇 |为什么长度不对?

bash - 用 Bash 变量替换 sed

python - 如何在Python中获取无线LAN适配器的Wi-Fi IP地址?

java - 如何使用套接字 channel 读写数据和接受连接

c - 一次可以分配多少数据? Linux 等现代操作系统的限制是什么?

linux - 损坏的依赖关系 : intltool

bash - SQL*Loader-522 : lfiopn failed for file

bash - 国际化 Bash 脚本

linux - 选择非阻塞读取