echo command | netcat host port
这会导致命令被发送到远程主机并读回一些数据。但几秒钟后,连接关闭。-w 参数没有改变任何东西。我在 SuSE 10.1 上使用 netcat v1.10。
答案1
这适用于nc
OS X 上的命令(假设您要发送的命令在文件中):
cat file - | nc host port
(本质上,cat
将文件内容转储到标准输出,然后在标准输入上等待您)。
扩展一下,如果您想从 shell 本身发送命令,您可以这样做:
cat <(echo command) - | nc host port
答案2
在nc
Ubuntu 上:
nc -q -1 host port
来自Ubuntunc
手册页:
-q seconds
after EOF on stdin, wait the specified number of seconds and then quit. If seconds is negative, wait forever.
请注意,不同发行版之间的可用nc
选项差别很大,因此这可能不适用于您的发行版(OpenSUSE)。
答案3
我找到了:
echo command | netcat host port -
我的同事知道这一点。但我在文档中根本没看到这一点。
答案4
我认为您无法使用 netcat 或 socat 来解决这个问题。我刚刚对两者都进行了广泛的修改,socat 看起来最有希望。
我设法设置 socat 来连接到远程 TCP 端口并在本地 unix 域套接字上监听(理论上这样链接可以一直保持),但是一旦本地进程与 unix 套接字分离(另一个 socat 将 unix 套接字链接到 stdin/out),它就会关闭 TCP socat 会话。
这里的问题是,通过 netcat / socat 的每个连接都会与服务器建立新的 TCP 流连接,并且当本地端断开连接时,它会关闭该 TCP 流会话。
我认为您可能必须为此编写一些自定义代理软件,打开与远程端的 TCP 连接,然后在套接字/管道/ fifo 或其他任何东西上进行本地监听,然后将数据发送到现有的 TCP 管道并返回结果。