将可执行文件通过管道输出到现有的 Netcat 连接

将可执行文件通过管道输出到现有的 Netcat 连接

我打开一个终端窗口并使用以下命令连接到 shell netcat

Terminal Window 1: nc hostname port

然后,我导航到一个目录并打开一个文件,...等(我需要能够自己执行此操作,而不是自动化它)。

然后我可以将计算机上可执行文件的输出通过管道传输到netcat连接吗?

答案1

您也许可以使用命名管道来做到这一点。

mkfifo ncpipe
nc hostname port < ncpipe
# --- In a galaxy far, far away (another terminal) ---
somecommand > ncpipe

然而,这存在一些问题......例如,如果您花费太长时间,连接可能会超时或其他什么。

也可以双向执行此操作...我前段时间使用过它来转发本地 telnet 端口,不确定它是否仍然有效:

mkfifo send receive
> send &
> receive &
nc 127.0.0.1 23 < receive > send &
telnet_pid=$!
nc host port < send > receive &
server_pid=$!
wait $server_pid
kill $telnet_pid
rm send receive

不管怎样,你可以用命名管道做一些奇怪的事情。但是,您还必须小心它们......如果有一个旧进程打开了管道,则可能会出现意外的输出。最好为每个任务创建一个闪亮的新干净管道,并在完成后删除。

特别是使用 SSH 更容易(更安全)地完成端口转发,但它并不总是可用。如果在您的场景中可用,最好只执行以下操作:

somecommand | ssh user@host somereceiver
# or the other way around
ssh user@host somecommand | somereceiver

相关内容