用于管道连接到插座的标准Unix命令行工具

用于管道连接到插座的标准Unix命令行工具,unix,sockets,command-line,named-pipes,Unix,Sockets,Command Line,Named Pipes,我有一些应用程序和标准Unix工具将它们的输出发送到Solaris中的命名管道,但是命名管道只能从本地存储(在Solaris上)读取,因此我无法通过网络访问它们,也无法将管道放在NFS存储上以便通过网络访问它们的输出 这让我想知道是否有类似的方法将命令行工具的输出直接转发到套接字,比如: mksocket mysocket:12345 vmstat 1 > mysocket 2>&1 netcat将帮助在网络上建立管道。非常适合这样做。这是一个例子 您的案例的用法可能如下所

我有一些应用程序和标准Unix工具将它们的输出发送到Solaris中的命名管道,但是命名管道只能从本地存储(在Solaris上)读取,因此我无法通过网络访问它们,也无法将管道放在NFS存储上以便通过网络访问它们的输出

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

mksocket mysocket:12345
vmstat 1 > mysocket 2>&1

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

非常适合这样做。这是一个例子

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

echo -en '\x00\x00\x00\x01\x0b' | nc -q 1 -U $SSH_AUTH_SOCK | strings
  • 服务器侦听连接,然后向其发送输出:

    server$my_script|nc-l 7777

  • 远程客户端连接到端口7777上的服务器,接收数据,保存到日志文件:

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


  • 您可能需要使用以下选项之一:

  • ssh:secure(加密),已在Solaris上安装,但您必须为非交互式会话设置密钥对
    • e、 g.
      vmstat2>&1 | ssh-i private.keyoss@remote.node“cat>vmstat.out”
  • netcat:设置简单,但不安全,容易受到攻击
    • 见等
  • (也称为
    nc
    )正是您想要的。它正变得相当标准,但并非所有系统都可以使用

    似乎是netcat的增强版,有更多的功能,但不太常见


    在Linux上,您还可以使用
    /dev/tcp/
    。有关更多信息,请参阅。

    使用netcat,每个人都走上了正确的道路。但是,我想补充一点,如果您正在通过管道进入
    nc
    并期望得到响应,则需要使用
    -q
    选项。从手册中:

    -q秒

    在stdin上执行EOF后,等待指定的秒数,然后退出。如果秒数为负,则永远等待

    例如,如果要与SSH代理交互,可以执行以下操作:

    echo -en '\x00\x00\x00\x01\x0b' | nc -q 1 -U $SSH_AUTH_SOCK | strings
    
    一个更完整的例子在


    *我从

    中偷了这个,感谢ssh的回答,在这种情况下,安全性不是问题,但是在问题中有它是很好的。值得一提的是,
    /dev/tcp
    是Bash的一个特殊功能,并不是Linux上的所有shell都可以使用。