用于管道到套接字的标准Unix命令行工具

Rob*_*uld 22 unix sockets command-line named-pipes

我有一些应用程序,标准的Unix工具将它们的输出发送到Solaris中的命名管道,但命名管道只能从本地存储中读取(在Solaris上),因此我无法通过网络访问它们或放置管道在NFS存储上,用于对其输出进行联网访问.

这让我想知道是否有类似的方法将命令行工具的输出直接转发到套接字,例如:

mksocket mysocket:12345
vmstat 1 > mysocket 2>&1
Run Code Online (Sandbox Code Playgroud)

Tod*_*lin 24

Netcat非常适合这个.这是一个包含一些常见示例页面.

您案例的用法可能如下所示:

  1. 服务器侦听连接,然后向其发送输出:

    server$ my_script | nc -l 7777

  2. 远程客户端连接到server端口7777,接收数据,保存到日志文件:

    client$ nc server 7777 >> /var/log/archive


Bri*_*ell 15

netcat(也称为nc)正是您正在寻找的.它已经变得合理标准,但并非在所有系统上都可用.

socat 似乎是netcat的增强版本,具有更多功能,但不太常用.

在Linux上,您也可以使用/dev/tcp/<host>/<port>.有关详细信息,请参阅Advanced Bash-Scripting Guide.


Chr*_*ris 6

netcat将帮助在网络上建立管道.