【发布时间】:2014-06-13 05:42:28
【问题描述】:
如果尝试连接时间超过 3 秒(即:端口未打开时),为什么以下 netcat 命令不会超时?我认为 -w 标志将是我所需要的。操作系统是 OSX 10.9。
nc -v -z -w 3 127.0.0.1 5050
假设可行,我计划像这样实现(不确定这是否可行,总 bash noob)
nc -v -z -w 3 127.0.0.1 5050 | /dev/null && echo "Online" || echo "Offline"
【问题讨论】:
-
当我尝试它时,我立即收到错误响应,因为端口未打开。你确定它没有在你的主机上打开吗?如果是,那么这就是它没有超时的原因,因为它实际上已连接。
-
很奇怪,它似乎只发生在特定端口上......我试图使用它来监控特定服务是否从远程位置或网络在我的机器上运行。该服务当前未运行,但 netcat 似乎没有超时,进程只是挂起。有什么想法吗?
-
您是否正在运行任何类型的防火墙? “iptables -L”向你展示了什么?
-
我正在使用 OSX 并且我的防火墙已关闭。它明确指出“允许与此计算机的所有连接”。 OSX 中没有原生的 'iptables' 命令。
-
netcat 在不同平台上的行为显然不同 (philandstuff.com/2013/05/17/statsd-netcat.html)。我在linux上。您可以在运行此命令的同时运行 tcpdump 以查看是否正在发生预期的行为吗?