Jus*_*zer 39 linux command-line-interface netcat echo
我正在从脚本执行以下命令:
echo '{"hostUp": true}' | sudo /usr/local/bin/netcat localhost 8001
但是,netcat 客户端会无限期地保持打开状态。发送此数据后如何关闭连接?
7yl*_*l4r 27
在正确的上下文中,其他答案-c和-q给出的答案都是正确的,但它可能有助于总结为什么有多个答案并提供更通用的解决方案。
这些不同的选项做同样的事情,但是 netcat 的不同实现:
-c netcat 的 GNU 实现-q netcat 的 OpenBSD 实现。 -w (其他?)netcat 的 OpenBSD 实现。 某些版本需要 int 来指定退出-q和-w选项之前等待的秒数。此 int 必须是> 0或>= 0,具体取决于版本。
如果您在多台机器上实现某些东西并且不确定它们使用相同的 netcat 实现,您可以考虑用timeout程序包装您的 netcat 调用以在几秒钟后杀死 netcat。
timeout 5 echo '{"hostUp": true}' | netcat localhost 8001
这种方法有点笨拙,因为无论是否成功发送数据,它都对 netcat 的执行设置了上限,但是如果您正在发送少量数据并且有几秒钟的空闲时间,那么这应该可以工作使用任何 netcat 实现。
您可以使用-q参数,但它也会导致netcat服务器关闭。
$ echo '{"hostUp": true}' | sudo /usr/local/bin/netcat -q 5 localhost 8001
Run Code Online (Sandbox Code Playgroud)