将 linux 命令输出到 url/port 或 socket,而不是将其写入文件

jis*_*ion 2 sockets linux pipe websocket

我有一个命令,它输出我使用“>>”命令存储在 ext 文件中的某些数据。现在,我希望在任何服务器上有一个套接字或端口来捕获命令的输出,而不是这样做。基本上我想将所有脚本数据输出到可能的套接字或网址。

非常欢迎这方面的任何帮助。

kan*_*aka 6

您可以使用 socat 监听端口 12345 并回显发送到它的任何数据,如下所示:

socat -u TCP-LISTEN:12345,keepalive,reuseaddr,fork STDOUT
Run Code Online (Sandbox Code Playgroud)

如果您也想将其捕获到文件中 ( file.log),您可以对 tee 使用相同的命令:

socat -u TCP-LISTEN:12345,keepalive,reuseaddr,fork STDOUT | tee file.log
Run Code Online (Sandbox Code Playgroud)

您可以运行程序以输出到 bash 的 TCP 虚拟设备:

./prog > /dev/tcp/localhost/12345
Run Code Online (Sandbox Code Playgroud)

如果您不想使用 bash magic,那么您也可以使用 socat 发送数据:

./prog | socat - TCP-CONNECT:localhost:12345
Run Code Online (Sandbox Code Playgroud)

上面的示例假设您正在同一系统上运行程序和“logger”,但您可以将“localhost”替换为您希望发送到的系统的主机名或地址(socat 正在侦听的系统)。