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」スイッチを使用するとタイムアウトするはずですが、そうではありません。複数のマシンからの同じ問題。
これは単にマニュアルページを誤解しているだけですか? 応答がない場合、X 秒後に nc をタイムアウトにする他の方法はありますか? Mac OS X の組み込みツールを使用してこれを行う他の方法はありますか?
また、「-z」スイッチのみを使用して nc を実行してみましたが、同じ結果が得られました。マシンは本番環境に配置されているため、nmap などのサードパーティ アプリケーションをインストールすることはできません。
Platform: Mac OS X 10.8.4
Executable: /usr/bin/nc
この質問に回答があった場合は申し訳ありませんが、検索しましたが、これに対する解決策が見つかりませんでした。