我正在从脚本执行以下命令:
echo'{“hostUp”:true}’| sudo /usr/local / bin / netcat localhost 8001
但是,netcat客户端无限期保持打开状态.发送此数据后,如何关闭连接?
解决方法
在正确的上下文中,给出的其他答案-c和-q都是正确的,但它可能有助于总结为什么有多个答案并提供更一般的解决方案.
这些不同的选项做同样的事情,但是netcat的不同实现:
> -c GNU的netcat实现
> -q OpenBSD实现netcat.
> -w(其他?)Opencat的netcat实现.
某些版本需要int来指定在退出-q和-w选项之前等待的秒数.这个int必须是> 0或> = 0,具体取决于版本.
如果您在多台计算机上实现某些功能并且不确定它们是否使用相同的netcat实现,您可以考虑使用超时程序包装netcat调用以在几秒钟后终止netcat.
timeout 5 echo'{“hostUp”:true}’| netcat localhost 8001
这种方法有点笨拙,因为无论是否成功发送数据,它都会对netcat的执行设置一个上限,但如果你发送少量数据并且有几秒钟的时间,那么这应该有效与任何netcat实现.