用于管道连接到插座的标准Unix命令行工具
我有一些应用程序和标准Unix工具将它们的输出发送到Solaris中的命名管道,但是命名管道只能从本地存储(在Solaris上)读取,因此我无法通过网络访问它们,也无法将管道放在NFS存储上以便通过网络访问它们的输出 这让我想知道是否有类似的方法将命令行工具的输出直接转发到套接字,比如:用于管道连接到插座的标准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将帮助在网络上建立管道。非常适合这样做。这是一个例子 您的案例的用法可能如下所
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
client$nc server 7777>/var/log/archive
您可能需要使用以下选项之一:
- e、 g.
vmstat2>&1 | ssh-i private.keyoss@remote.node“cat>vmstat.out”
- 见等
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都可以使用。