netcat:发送文本到 echo 服务,读取回复然后退出

netcat:发送文本到 echo 服务,读取回复然后退出

我想用来netcat向我的服务器上的回显服务发送一段文本,获得回复然后退出,以便我知道连接仍然良好。到目前为止我已经尝试过:

 echo 'test' | netcat server 7 

这样 netcat 将等待更多输入而不是退出。

netcat得到echo服务的回复后如何退出?

答案1

netcat-openbsd刚刚尝试过 -和之间的行为略有不同netcat-traditional(ubuntu 16.4)。 OpenBSD 变体可以满足您的期望,而对于 netcat-traditional,我需要添加-q 1以避免等待更多输入。

echo 'test' | netcat -q 1 server 7

答案2

我知道这有点旧,但没有其他答案对我有用,而这确实:

echo 'test' | netcat -N $server $port

请注意-N

输入 EOF 后关闭网络套接字。某些服务器需要此来完成其工作。

在 Windows 和 Linux 上为我工作。

答案3

用这个:

cat <(echo command) - | nc host port

问题是,nc将在 stdin 关闭后立即关闭连接,这对于简单的my_command字符串来说非常快,因此永远没有机会收到响应。如果您通过管道传输一个非常大的文件,您会发现它可能会在发送完文件之前收到响应。

输入第二个cat参数-:它cat在发送第一个参数的内容后监听标准输入以获取更多内容。第一个参数只是让echo命令通过cat——它也可以是一个包含命令 la 的文件cat < file - | ...

这样做的缺点是,它会一直保持打开状态,直到您击中^C^D击中外壳为止。使用-w 1(OSX netcat)或(nmap 的 ncat)添加超时-i 1会使其在 1 秒后关闭连接,但在您输入某个字符之前它不会退出该进程。

这个答案是基于这是对相同超级用户问题的回答

答案4

我没正确理解你的问题?

默认的 netcat 侦听器应该在接收到输入后退出(在这种情况下,您的 echo 将其传送到 netcat,然后将其转发给侦听器)。

如果您希望侦听 Netcat 服务在收到输入后保持侦听状态:

nc -lk 12345
  • 其中 12345 是端口号

最重要的是,请检查 netcat 的手册页..它们对于所有命令都非常有用......

man nc

相关内容