我想使用 netcat 测试与任意主机的连接。似乎-w
参数实际上并没有在 5 秒后关闭连接。(这是在 Ubuntu 14.04 和netcat-traditional
1.10-40 上)。它只会继续尝试连接 5 秒钟。我真正想知道的是是否nc
能够成功连接到主机(退出状态为 0)。
为了解决这个nc
问题,我运行了nc
该timeout
命令。这产生了所需的功能,但是超时总是以 124 状态代码退出。
我真正想要的是 的退出状态nc
。运行时如何获取该状态
timeout 5 nc -w 5 bach; echo $?
答案1
来自timeout
手册页(GNU coreutils 8.22)...
--preserve-status
以与 COMMAND 相同的状态退出,即使命令超时
所以你的命令就会变成
timeout --preserve-status 5 nc -w 5 bach; echo $?
然而,我刚刚注意到原始nc
命令使用的-w
选项不是我们想要的。它告诉nc
如果连接处于空闲状态则关闭连接不是如果连接时间过长则放弃。
我们真正想要的选项是-G
设置 TCP 连接超时。我们-w
还希望关闭连接(因为我们没有发送任何内容)。
这给出了一个简单的nc
命令
nc -G 5 -w 5 bach; echo $?
另一种方法是将空行回显到nc
发送到服务器
echo | nc -G 5 bach; echo $?