bash - Mac OS X 10.8.4 上的 nc (netcat) 卡住

标签 bash networking osx-mountain-lion sshd netcat

我在 Mac OS X 上使用 nc 实用程序时遇到了一个小问题,我经常将此实用程序用作检查端口是否打开以及守护程序正在运行的版本的快速而肮脏的解决方案。

前几天我们部署了一组新计算机,我想验证它们运行的​​是什么版本的 sshd,而无需离开我的椅子。

这是我运行的命令和结果输出:

$ for i in {183..200}; do echo "hello" | nc -n -w 2 -v 10.120.113.$i 22; done
Connection to 10.120.113.183 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_5.9
Protocol mismatch.
nc: connect to 10.120.113.184 port 22 (tcp) failed: Connection refused
^C
$

它在 183 上找到第一台机器并返回守护程序版本,它看起来不像 sshd 在 184 上运行,但是当它到达 185 时它就停止了,我必须用 ctrl+c 杀死它。

据我了解 nc 的手册页,使用“-w”开关时应该会超时,但事实并非如此。它来自多台机器的同一个问题。

这仅仅是我误解了手册页的情况吗? 如果没有收到任何响应,还有其他方法可以让 nc 在 X 秒后超时吗? 是否有任何其他方法可以使用 Mac OS X 中的内置工具来执行此操作?

我也尝试过仅使用“-z”开关运行 nc,结果相同。 这些机器被放置在我们的生产中,所以我不允许安装任何第 3 方应用程序,如 nmap。

Platform: Mac OS X 10.8.4
Executable: /usr/bin/nc

很抱歉,如果这个问题已经得到解答,我进行了搜索但找不到任何解决方案。

最佳答案

我相信您正在寻找 -G 选项。从手册页:

-G conntimeout TCP connection timeout in seconds.

-w 用于设置 连接超时。 -G 选项用于设置超时 before 连接。这应该给你你想要的

nc -n -G 2 -v xxx.xxx.xxx.xxx 22

关于bash - Mac OS X 10.8.4 上的 nc (netcat) 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18578565/

相关文章:

linux - sudo 忽略从同一脚本发送的 SIGTERM

bash - 我无法使用基于 ubuntu 的镜像部署 Docker Swarm 服务

c - 如何在与不同机器上的多个客户端连接的服务器中管理应用程序的多个实例

osx-lion - Mountain Lion 上的 mac 32 位计算机

bash - 我可以将任意命令 block 传递给 bash 函数吗?

c++ - 多个端口的多个线程?

ios - RestKit映射: map different objects at once

macos - 在 OSX Mountain Lion 下反转颜色

ruby-on-rails-3.2 - 在 Mountain Lion postgresql 上升级后不起作用

arrays - 在 shell 脚本中连接数组以创建备份文件路径